Commit Graph

341 Commits

Author SHA1 Message Date
Volodymyr Zibarov
586ce5b472 C++: Print numeric template arguments in NamePrettyPrinter
Improve type printed for template specializations with numeric
or bool values.

Code example:
template<bool B, class T> struct enable_if{};
template<class T> struct enable_if<true, T>{ typedef T type; };

In outline: "enable_if<_Tp1, T> <T>" becomes "enable_if<true, T> <T>"

TemplateArgument class holds pointer to numeric literal owned
by CppDocument, so remove Control::squeeze() to not release
numericLiterals in CppDocument::releaseSourceAndAST()

This based on TemplateArgument class introduced in commit
9ee693ee22

Change-Id: Ib787a5e402c3e8d8467b520347a26afa6087d4bd
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
2020-06-03 12:11:15 +00:00
Volodymyr Zibarov
9ee693ee22 C++: fix built-in code model to work with shared_ptr on MSVC 2017
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>
2020-05-29 12:39:28 +00:00
Volodymyr Zibarov
df6d95c3e1 C++: Fix cplusplus-keywordgen to generate Keywords.cpp
Fix kewordgen to generate current Keywords.cpp with minimal diff,
but also to be compatible with old usage and kwgen files.

Add new parameters:
%no-namespace-for-tokens - not use namespace for tokens
%pre-check-argument - set type and name of additional variable to use
%function-name - name of a function ("classify" by default)
%pre-check - name of a variable to check for a keyword (i.e. cxxEnabled)
Now "%%" is also used to end and restart keywords parsing to be able to
generate additional keywords for classifyOperator()

Automatically add checks for LanguageFeatures to generated code
Pass input and output files with command line arguments, print usage

Update Keywords.kwgen to include all keywords currently used

Add missing aliases to Token.h

Change-Id: I6cc84e150e0d797277204032fc05ce9cfbd01f58
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2020-05-28 11:12:38 +00:00
Christian Kandeler
1989dbe0d7 Built-in lexer: Recognize also reserved user-defined literals
Otherwise, we trip over uses of operators from the standard
library such as std::chrono's operator"" ms(), potentially breaking
basic code navigation.
Amends 425811291d.

Fixes: QTCREATORBUG-24067
Change-Id: I3b2863ce88ee3787414e7a1acdf25f368041cdb4
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2020-05-28 08:36:56 +00:00
Nikolai Kosjar
005e7aa54d C++: Fix crash in AlignofExpressionAST::clone()
...due to uninitialized member typeId.

Fixes: QTCREATORBUG-23184
Change-Id: I00afe87b9c61a1e8edefc122b1a99635736650cb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
2019-11-06 12:38:28 +00:00
Nikolai Kosjar
54fefd89b8 C++: Transfer noexcept specifier for refactoring actions
This applies for e.g.

* "Add Definition..." (on function decl)
* "Move Definition..." (on function decl)
* "Insert Virtual Functions of Base Class" (on class specifier)

Fixes: QTCREATORBUG-11849
Fixes: QTCREATORBUG-19699
Change-Id: I0d259bc1782470f3b3f19617230005a5594a5cca
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2019-10-08 09:20:10 +00:00
hjk
2e14df7561 Some clang-tidy -use-modernize-nullptr
Change-Id: I1bed5e85a5b7948d08502a72a10f80baa075c204
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2019-08-01 13:20:26 +00:00
hjk
1fb41647eb CPlusPlus: Use member initialization in AST.h
This also means that the implicitly-declared default constructor
does the right thing now, and the generator does not have to
take care of updating it anymore.

Change-Id: Ib4de88c506839398ce77ab4eaf4680a9b7e6091e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-30 06:55:51 +00:00
hjk
3885807817 CPlusPlus: Modernize frontend generator
... and the generated code.

Change-Id: Ib04d98e9c16f7aae96575b3d0c4ee9f27651e138
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-26 09:53:20 +00:00
The Qt Project
9ebe05fd4e Merge "Merge remote-tracking branch 'origin/4.10'" 2019-07-26 09:34:33 +00:00
hjk
7ab6783e24 Standardize on int for line and column values
Recently tons of warnings show up for presumably "problematic"
singned <-> unsigned and size conversions.

The Qt side uses 'int', and that's the biggest 'integration surface'
for us, so instead of establishing some internal boundary between
signed and unsigned areas, push that boundary out of creator core code,
and use 'int' everywhere.

Because it reduces friction further, also do it in libcplusplus.

Change-Id: I84f3b79852c8029713e7ea6f133ffb9ef7030a70
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-26 09:23:48 +00:00
Eike Ziller
3ab3e68a7b Merge remote-tracking branch 'origin/4.10'
Change-Id: I427280fdb207b878000697dfd37595ffdb26f4e7
2019-07-26 10:30:03 +02:00
Cristian Adam
8ae9cfe39d CMake build: Add "Devel" package
The "Devel" package will contain headers, libraries, documentation
needed by the 3rd parties to build Qt Creator plugins.

Fixes: QTCREATORBUG-22514
Change-Id: If54929f823982b921b98a63ff6085d53618a3a49
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-07-25 14:06:46 +00:00
Joel Smith
8c437362bc C++: Support single quote digit separator in integer literals
C++14 supports the use of single quotes inserted between integer digits
as a separator.  Updates the built-in C++ code model to recognize such
quotes.  This fixes highlighting and indentation issues.

Change-Id: Ic35ce93060b96700a11d108dce1f3cf6c4543632
Fixes: QTCREATORBUG-14939
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-07-09 08:59:23 +00:00
Cristian Adam
c84885bc9f CMake build: Fix PIC issue with 3rd_cplusplus
3rd_cplusplus is an OBJECT library, which will end up into CPlusPlus,
which is a shared library, it's safe to set PIC to ON.

Fixes https://bugreports.qt.io/browse/QTCREATORBUG-22465

Change-Id: I6ef9bf8c73102a3a5996c0fee7b1fe25e6aa677f
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-20 11:34:34 +00:00
Cristian Adam
d855b84c5d Qt Creator CMake port
Based on Tobias Hunger's work from a few months ago.

The CMake configuration needs libclang and Qt paths specified as
CMAKE_PREFIX_PATH.

Auto tests are run with "ctest". At the moment the pass rate is 87%.

Change-Id: Iba98e39bf22077d52706dce6c85986be67a6eab0
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2019-05-17 13:33:28 +00:00
Christian Stenger
e9242ad6af CPlusPlus: Fix enum value
Change-Id: I87dc174be5a9c29ed4770bcb5630d935c9bc8e3f
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2019-01-31 10:42:13 +00:00
Allan Sandfeld Jensen
51bc18e6d5 Fix lvalue references and rvalue reference incorrectly matching
Adds the comparison of isRvalueReference to make sure they get
difference entries.

Change-Id: I294205786f3d1322e542d3b308d61ab44647ecc9
Fixes: QTCREATORBUG-13839
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-29 11:34:25 +00:00
Orgad Shaneh
910724f963 C++: Add some missing overrides in Bind
GCC8 warns about hidden overloads.

Change-Id: I67582e2486741d4edaf600e84a71c8c926996d07
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-11-12 07:11:45 +00:00
Nikolai Kosjar
e49e32d2eb C++: Fix Token::spell()
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>
2018-11-02 14:12:15 +00:00
Nikolai Kosjar
a80396f807 C++: Reformat token_names table
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>
2018-11-02 08:46:21 +00:00
Nikolai Kosjar
0d29fea0b3 C++: Fix parsing enum specifier III
This amends the obviously wrong
aac1bebace.

Fixes

  FAIL!  : tst_Semantic::q_enum_1() Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(EnumerationUse) 'resultCount > 0' returned FALSE. ()
  FAIL!  : tst_CheckSymbols::test_checksymbols(VariableHasTheSameNameAsEnumUse) Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(enum_inside_block_inside_function_QTCREATORBUG5456) Compared values are not the same
  FAIL!  : tst_CheckSymbols::test_checksymbols(enum_inside_function_QTCREATORBUG5456) Compared values are not the same

  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_block_inside_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_block_inside_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_class) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_class_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_namespace) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_namespace_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_member_function) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_inside_member_function_cxx11) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_in_class_accessed_in_member_func_inline) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_completion(enum_in_class_accessed_in_member_func) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_cpplocatorfilters_CppLocatorFilter(CppLocatorFilter-filtered) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_cpplocatorfilters_CppCurrentDocumentFilter() Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_builtinsymbolsearcher(BuiltinSymbolSearcher::AllTypes) Compared lists have different sizes.
  FAIL!  : CppTools::Internal::CppToolsPlugin::test_builtinsymbolsearcher(BuiltinSymbolSearcher::Enums) Compared lists have different sizes.

Task-number: QTCREATORBUG-21413
Change-Id: I71ace00091e37f0a148086e5047efaec08923b1a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-11-01 14:29:52 +00:00
Nikolai Kosjar
aac1bebace C++: Fix parsing enum specifier II
This amends the obviously wrong
de975aca4f, which did not honored nameless
enum specifiers.

This fixes e.g. "Find Usages" for declarations following "enum {};".

Change-Id: Id98c074156f576b9a63e6c25dab38721ca34e496
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-10-24 12:47:03 +00:00
Nikolai Kosjar
de975aca4f C++: Fix parsing enum specifier
The enum name has to be an identifier. For the example in the referenced
report it was a destructor, which violated invariants in the lookup
code.

Fixes: QTCREATORBUG-20952
Change-Id: Ib8c9c23d6e001368c11c6a4b80c4295559786823
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-10-11 06:56:43 +00:00
Ivan Donchevskii
50e5aacb02 Highlighting: Add highlighting style for punctuation
Currently only operators have their own style but not
punctuation tokens. Make possible to highlight both.

Task-number: QTCREATORBUG-20666
Change-Id: I9533e0f1bef65b86c4e4f5c9756571103584124b
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
2018-09-13 11:15:05 +00:00
Eike Ziller
f8e88e8ce4 Fix compilation issues with C++17
Testable on Linux/macOS by changing c++14 to c++1z in qtcreator.pri.
Testable with latest MSVC2017 by setting _CL_=/std:c++17.

unary_function, binary_function, and a few other things that were
deprecated are removed in C++17.
std::string got a non-const overload for its "data" member function,
so we cannot create a function pointer on it without specifying its
type. Use std::declval instead (though it requires a default constructor
for the type).

MSVC seems to have an issue with Utils::transform for std::vector
(used in Nim plugin), but that looks like a compiler issue.

Change-Id: I94f9a93d591d55b610f86fabfc618158927d6221
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-06-05 12:04:59 +00:00
hjk
1773b4d8b5 CPlusPlus: Fix some crash
Change-Id: I8b98d86e7d5321e2420d388abba159474d7ad799
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-05-16 06:36:37 +00:00
Hugo Holgersson
86aab16ea4 TextEditor: Highlight punctuators as Text
This change limits the set of tokens that fall under
Token::isOperator(). That allows cpphighlighter.cpp to
distinguish operator tokens from punctuator tokens
(without changing any logic in cpphighlighter.cpp).

This change moves punctuators from "Operator"
to the "Text" style category where they belong.
Punctuators are not operators. Punctuators are
dumb text tokens.

Why don't we let the clang backend alone separate
these tokens for us?

1. Clang is slow on big files. Sometimes the
   highlighting dictated by clang is painted _seconds_
   after cpphighlighter.cpp runs. CppHighlighter is way
   faster so we use it to "prepaint" code while clang is
   busy in the background.

2. Secondly, clang cannot yet handle all operator types.
   In particular, none if its "operator cursors"
     CXCursor_UnaryOperator:
     CXCursor_BinaryOperator:
     CXCursor_CompoundAssignOperator:
     CXCursor_ConditionalOperator:
   includes the -> and . operators.
   We still need CppHighlighter to paint those tokens.

However, once clang has finished processing the file some
operator tokens will be repainted. We need clang to get
all operators' semantics. In particular, we need clang to
tell us if < is a "smaller than"-operator or part of a
template parameter like set<int>.

Task-number: QTCREATORBUG-19659
Change-Id: I952cb58f7c79134b3281e2a8221425cc1d0ad263
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
2018-05-03 13:43:16 +00:00
Orgad Shaneh
eea6a7c3b3 Utils: Purge qtcfallthrough.h
No longer needed.

Change-Id: I9b0bee014df89d4c567f1d2431b5ff9404f5f925
Reviewed-by: hjk <hjk@qt.io>
2018-04-09 09:04:13 +00:00
Colin Duquesnoy
2a016d05b2 Add support for nested namespaces (C++17)
Task-number: QTCREATORBUG-16774
Change-Id: I3de3ac65810213e21c9a3bafef2474d252e191f7
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-09 17:54:30 +00:00
Ivan Donchevskii
c020f2448b CPlusPlus: Add toLink method to the Symbol
Basically move it from CppTools to CPlusPlus
to be able to use it there.

Change-Id: I0af80f93bdc029824397ceafdf940cb86c4382b0
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2018-02-07 14:01:52 +00:00
Friedemann Kleint
f482270432 Introduce Q_FALLTHROUGH()
Silence g++ 7.X warnings.

Change-Id: I9d06d04b496c9ec060e13e1be6f43d8fbadb1f3b
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2018-01-24 14:50:43 +00:00
Eike Ziller
cfdea6b9c2 Merge remote-tracking branch 'origin/4.4'
Change-Id: I7bf72444b19db20fcc7dc2c9d1f02ec2b30b658f
2017-09-25 11:00:25 +02:00
Nikolai Kosjar
76006a1353 C++: Fix crash with invalid raw string literal
While parsing a document Bind::asStringLiteral() Token::spell() was
called for a raw string literal token with a Token::literal nullptr.

This is due scanRawStringLiteral() not properly aborting for
invalid/incomplete code and that the code paths handling
multi-line-raw-strings were not limited to the highlighting case.

Address both cases.

Task-number: QTCREATORBUG-18941
Change-Id: I489d288ccbd7b59be396dada846613ff555436cf
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-09-20 07:38:04 +00:00
Eike Ziller
3d9cf954e2 Merge remote-tracking branch 'origin/4.4'
Conflicts:
	src/plugins/debugger/debuggerdialogs.cpp
	src/plugins/debugger/gdb/remotegdbserveradapter.cpp

Change-Id: I1ae77869887a8d9ef2a33439f2733315db9e0cf0
2017-09-19 12:10:26 +02:00
Nikolai Kosjar
ad560bf019 CPlusPlus: Avoid nullptr access
Task-number: QTCREATORBUG-18903
Change-Id: I852b5de453d44c16adffd44c89900cfb8c3cc522
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-09-13 12:09:46 +00:00
Andre Hartmann
201a09b5c5 C++: Fix highlighting of "float" keyword for C files
... in the Classic Code Model.

Broken by 0d1fef41f7

Task-number: QTCREATORBUG-18879
Change-Id: I7d0222cc81e8847827af042e89d3b75c57f5d454
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-09-11 08:59:05 +00:00
Eike Ziller
c01ddc4660 Merge remote-tracking branch 'origin/4.4'
Conflicts:
	qbs/modules/qtc/qtc.qbs
	qtcreator.pri
	src/plugins/qbsprojectmanager/qbsproject.h

Change-Id: I6b9cdf704be95ade02488c8b19582b6621282fb8
2017-07-28 15:24:14 +02:00
Orgad Shaneh
e6fb1fea65 C++: Delete empty source file
Change-Id: Ib86e09d6d516b175e715725fa9b60d7ae2626ff8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-07-26 07:57:20 +00:00
Orgad Shaneh
3e91c7670e C++: Re-add Roberto's license header to files without one
Nokia's license header was removed in
b342ad8cf4, but these files didn't have the
second license header that was supposed to remain.

Change-Id: Ib9977a3127fd48197a1a02982e7563c486bfca3a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-07-26 07:57:03 +00:00
Orgad Shaneh
dc43b89172 Replace include guards with #pragma once
Change-Id: Icce9d191cc6cae89baf973e949dc0757d318d6ea
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-07-26 07:44:27 +00:00
Eike Ziller
361fdad3be Merge remote-tracking branch 'origin/4.4'
Change-Id: I778acc044ac105a11054b314aecac5b1c2cfee6a
2017-07-18 15:23:29 +02:00
Christian Kandeler
be2b3c91ae Add Q_FALLTHROUGH for Qt < 5.8
... and make use of it.
With gcc 7, the new option -Wimplicit-fallthrough is introduced and
added to the -Wextra set, triggering dozens of warnings in our sources.
Therefore, we annotate all obviously intended fall-throughs. The ones
that are still left are unclear and need to be checked by the respective
maintainer.

Change-Id: I44ead33cd42a4b41c28ee5fcb5a31db272710bbc
Reviewed-by: Nikita Baryshnikov <nib952051@gmail.com>
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
2017-07-17 07:51:23 +00:00
Ivan Donchevskii
550ed2927d C++: fix lookups for functions with const args
Make declarations equal in case they differ only
by argument const and/or volatile (13.1.3.4).

Task-number: QTCREATORBUG-18475
Change-Id: Id0561fda3b9081b92716a8739ba9963e90b5d709
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-07-11 13:38:56 +00:00
Orgad Shaneh
c9345084c7 C++: Use #pragma once in cplusplus-update-frontend
Change-Id: Ie4821a04706ee55b4ec17cf73356c15c333b3324
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-06-30 09:15:03 +00:00
Przemyslaw Gorszkowski
7bcf483189 C++: fix code completion of stl containers in internal code model
This fix makes some trick and replaces existing typedef of 'pointer'
to the simplest one(only in class unique_ptr), e.g.:
template <class _Tp>
class unique_ptr
{
  typedef some_strange_things pointer;
  pointer operator->();
}
is replace with
template <class _Tp>
class unique_ptr
{
  typedef _Tp* pointer;
  pointer operator->();
}

In most of the implementation of unique_ptr it should work.

Similar approach is done for std::list, std::vector, std::queue, std::set,
std::multiset, std::unordered_set.

It is done in this hacky way to omit problems with cyclic and complex
resolving of typedefs.

Change-Id: I1363dfc5e23d3cd2fa7af7fc27423bfbac2d894d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-06-15 17:18:20 +00:00
Orgad Shaneh
89057b552b Merge remote-tracking branch 'origin/4.3'
Change-Id: I56004e3ec9dc9d92d33bdae438c4f7e069eccc45
2017-06-02 15:13:51 +03:00
Robert Loehning
0823f67e58 C++: Initialize BaseClass::_isVariadic
Change-Id: I35fa5c9cbc1aa2b5ed46c6e1c0c003fd81bcc1dd
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Reviewed-by: André Hartmann <aha_1980@gmx.de>
2017-06-01 10:34:03 +00:00
Eike Ziller
4e35cc2ea8 Fix that raw string literals that close on same line were not terminated
With the built-in model, which affects basic highlighting.

Task-number: QTCREATORBUG-17720
Change-Id: I7369d7288d9c2c8e5ef36fc27549121014527e58
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
2017-05-19 13:50:42 +00:00
Nikolai Kosjar
837cb2e397 CppEditor: Do not highlight C++ and Qt keywords for C
Task-number: QTCREATORBUG-2818
Task-number: QTCREATORBUG-18004
Change-Id: Ibca60a1711c827dd8b4c0486bff3d49b19a61d8b
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2017-05-16 14:06:04 +00:00