These changes target Find Usages feature to work with shared_ptr.
Improve libs/3rdparty/cplusplus and plugins/cplusplus:
parse __declspec() attribute,
call to variadic function template without specified template arguments,
if constexpr,
c++11 attributes [[value]],
function templates with default parameters,
resolve order for function vs template with default parameter,
template operator->() with default arguments,
template specialization with numeric values,
find best partial specialization,
fix partial specialization for non-first specialized argument
Fixes: QTCREATORBUG-7866
Fixes: QTCREATORBUG-20781
Fixes: QTCREATORBUG-22857
Fixes: QTCREATORBUG-17825
Change-Id: I31a080f7729edfb2ee9650f1aff48daeba5a673b
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: Nikolai Kosjar <pinaceae.pinus@gmail.com>
In
commit 86aab16ea4
TextEditor: Highlight punctuators as Text
the order of tokens was changed, but the corresponding "spelling table"
token_names was not adapted. As a result, e.g. Token::spell() returned
"##" for the T_PLUS token.
Fixes
FAIL! : tst_Semantic::lambda_2() Compared strings are not the same
FAIL! : tst_Semantic::enum_constantValue4() Compared strings are not the same
FAIL! : tst_Semantic::enum_constantValueNegative() Compared strings are not the same
FAIL! : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()
FAIL! : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()
FAIL! : tst_Semantic::enum_constantValueNegative() '!expectedConstantValue' returned FALSE. ()
Change-Id: If4c676bdb963f53fbc57f7d92f3d68341dd51eda
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Token::spell() uses CPlusPlus::Kind as index into token_names. However,
checking whether CPlusPlus::Kind matches token_names is easier if it's
formatted in a similar way.
Change-Id: I3f32b72cf9508c2ea3a4fe6911c3853c309d9e9f
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
Syntax highlight rules for keywords are changed to highlight control
keywords and primitive data types separately.
Change-Id: Ifb25be7a97b92589030aa190641320c233dc7f2d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This will save us toLatin1() conversations in CppTools (which already
holds UTF-8 encoded QByteArrays) and thus loss of information (see
QTCREATORBUG-7356). It also gives us support for non-latin1 identifiers.
API-wise the following functions are added to Token. In follow-up
patches these will become handy in combination with QStrings.
utf16chars() - aequivalent of bytes()
utf16charsBegin() - aequivalent of bytesBegin()
utf16charsEnd() - aequivalent of bytesEnd()
Next steps:
* Adapt functions from TranslationUnit. They should work with utf16
chars in order to calculate lines and columns correctly also for
UTF-8 multi-byte code points.
* Adapt the higher level clients:
* Cpp{Tools,Editor} should expect UTF-8 encoded Literals.
* Cpp{Tools,Editor}: When dealing with identifiers on the
QString/QTextDocument layer, code points
represendet by two QChars need to be respected, too.
* Ensure Macro::offsets() and Document::MacroUse::{begin,end}() report
offsets usable in CppEditor/CppTools.
Addresses QTCREATORBUG-7356.
Change-Id: I0791b5236be8215d24fb8e38a1f7cb0d279454c0
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
This will avoid confusion when later more length and indices methods are
added.
In Token:
length() --> bytes()
begin() --> bytesBegin()
end() --> bytesEnd()
Change-Id: I244c69b022e239ee762b4114559e707f93ff344f
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Although they are now supported by the lexer
and parser, it is worth to remind that we still
need to address an issue concerning the highlight
of multiline literals (which with the advent of
the new raw strings will become more common).
Task-number: QTCREATORBUG-6722
Change-Id: I137337a9ac0152a1f8b9faded0b960c6fe3dd38a
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
The parser now understands emit/Q_EMIT as an expression statement.
Also, the recent fixes in the preprocessor introduced a side-effect
in the hanlding of code such as: emit signal(); Member signal started
being treated as a local use (parsed as a declaration) and possibily
being highlighted as unused variable.
Previously that worked by accident since there was an inconsistency
in the preprocessor on which only object-like macros were being
expanded even when the "no expand" flag was set. Then, the code
mentioned above was being parsed as an expression, what kind of worked.
Change-Id: I47a68ed4c1c1702872620b8ed7c7264fb0997034
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Those are the types char16_t and char32_t along with the new
char/string literals u'', U'', u"", u8"", and U"".
This is particularly important for the use of QStringLiteral
since in some platforms it relies on expansion such as above.
Note: The string literals quickfixes still need some tunning.
Task-number: QTCREATORBUG-7449
Change-Id: Iebcfea15677dc8e0ebb6143def89a5477e1be7d4
Reviewed-by: hjk <qthjk@ovi.com>
Actually, those should have gone in the previous corresponding
commits which introduced support for the keywords.
Change-Id: Ie95944899c426a2c2b03e60d1ad557e00bc3a82a
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Cause: Q_PRIVATE_PROPERTY didn't have an entry in token_names, so if
Token::spell or Token::name was called on a T_Q_GADGET, an out-of-bounds
access would occur.
Change-Id: I1ec7b91a5d3def5508e21ad4f1863a52cb4ed540
Reviewed-on: http://codereview.qt.nokia.com/4207
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
they are lying. nokia has no copyright on this code. and the double
license in a single file looks weird. that's why we moved it to
3rdparty/, so it is clear it is not nokia's.
Approved-by: legal