* You now get completion for std::vector<int>::[complete].
* Also added a test.
Conflicts:
src/plugins/cpptools/cppcompletion_test.cpp
src/plugins/cpptools/cpptoolsplugin.h
Change-Id: I596ebf6bd18ec9a347113f8d162cc124c8a0d6b4
Reviewed-by: hjk <qthjk@ovi.com>
The type highlighting change part of the recent patch
4a2a17af8a didn't seem to
please much from a visual point of view. It's a better
idea to keep the type highlighting as it was for now
and in the future try again the approach with an explicit
option and perhaps a more restrictive context.
The other patch is not reverted entirely because it does
fix a couple of bugs.
Change-Id: I806afa3d8c1c4b241080b8704255d737f61ee12c
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
- Fix issues with virtual/non-virtual destructors. They were not
being correctly identified in some cases - in particular on certain
uses in derived classes.
- Since now we do have a highlighting item for regular functions,
constructors and destructors are now highlighted as such. This is
more semantically correct and actually makes navigation and readiblity
more distinguishable, since it cleary differentiates the type itself
from its uses in expressions and declarators. (This seems to be what
other IDEs like Eclipse, Visual Studio, KDevelop are doing.)
NOTE: There's a switch to disable this item in the case it doesn't
get good acceptance. Actually, the switch can be made a user
setting...?
- Change the default color scheme so regular and virtual functions
have the same color (virtuals continue to be italic). This makes
sense given the above mentioned changes in constructors/destructors
highlighting behavior. (In other schemes virtual funcions don't have
different color, so this shouldn't be necessary in those.)
- Small renaming: "members" are now "fields" - consistent, since
they apply for data and it's the term used in the UI.
Change-Id: Ib1aa9c0bbf28a31d09f5696460b0095fbe29de80
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Could be reproduced in code as below (cursor at |):
QFormLayout|formLayout *fl = new QFormLayout(this);
Change-Id: I7f5e9ac8ff8dfffbca63d7ab9f837333440c9810
Reviewed-by: hjk <qthjk@ovi.com>
When switching from a header to a source file, the source->header
mapping is cached. It's not the case anymore for private headers (_p).
Change-Id: I481c0613e29db0a3fb4e17f339626abb49ffa8e2
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Just in case compilers id defining such things.
Change-Id: Ica6af8462e90bfab2bfa883ec12d5e648d6d33db
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Summary of most relevant items:
- Preprocessor output format change. No more gen true/false. Instead
a more intuitive and natural expansion (like from a real compiler) is
performed directly corresponding to the macro invocation. Notice that
information about the generated tokens is not lost, because it's now
embedded in the expansion section header (in terms of lines and columns
as explained in the code). In addition the location on where the macro
expansion happens is also documented for future use.
- Fix line control directives and associated token line numbers.
This was not detected in tests cases because some of them were
actually wrong: Within expansions the line information was being
considered as originally computed in the macro definition, while
the desired and expected for Creator's reporting mechanism (just
like regular compilers) is the line from the expanded version
of the tokens.
- Do not allow for eager expansion. This was previously being done
inside define directives. However, it's not allowed and might
lead to incorrect results, since the argument substitution should
only happen upon the macro invocation (and following nested ones).
At least GCC and clang are consistent with that. See test case
tst_Preprocessor:dont_eagerly_expand for a detailed explanation.
- Revive the 'expanded' token flag. This is used to mark every token
that originates from a macro expansion. Notice, however, that
expanded tokens are not necessarily generated tokens (although
every generated token is a expanded token). Expanded tokens that
are not generated are those which are still considered by our
code model features, since they are visible on the editor. The
translation unit is smart enough to calculate line/column position
for such tokens based on the information from the expansion section
header.
- How expansions are tracked has also changed. Now, we simply add
two surrounding marker tokens to each "top-level" expansion
sequence. There is an enumeration that control expansion states.
Also, no "previous" token is kept around.
- Preprocessor client methods suffered a change in signature so
they now receive the line number of the action in question as
a paramater. Previously such line could be retrieved by the client
implementation by accessing the environment line. However, this
is not reliable because we try to avoid synchronization of the
output/environment lines in order to avoid unnecessary output,
while expanding macros or handling preprocessor directives.
- Although macros are not expanded during define directives (as
mentioned above) the preprocessor client is now "notified"
when it sees a macro. This is to allow usage tracking.
- Other small stuff.
This is all in one patch because the fixes are a consequence
of the change in preprocessing control.
Change-Id: I8f4c6e6366f37756ec65d0a93b79f72a3ac4ed50
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>
Works the same way as Rename Usages for C++ Symbols.
For now, no Search Again as this requieres further work.
Task-number: QTCREATORBUG-413
Change-Id: I09e85ea1e8c247f5ce0b6bc566aba8018c1569e4
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
- Highlight all function/methods (not just virtual methods).
- Highlight as a function even if number of arguments does not match. In
that case, add a diagnostic message to indicate there are too many/too
few arguments.
- Fix highlighting of parameters in function declarations.
These used to be handled indiferently, and they could be mistaken for
type or field references.
- Properly highlight template method calls.
Change-Id: I6e61c9ee47763db95c62314f9cc1c4d398df38b3
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
Make sure the environment line is consistent during preprocessor
directives and identifier handling so clients can rely on consistent
information. Particularly important for macro usages.
New tests also added.
Change-Id: I962a39a86cd17b8d945d2959c2c95e2d258ea3e6
Reviewed-by: hjk <qthjk@ovi.com>
Commit 75a0c7f9b52cde47f20fdc1b89e1264d60350848 in qt5/qtbase changed
some QRegExp methods to be non-const (they were previously const). This
change makes Qt Creator compile again.
Change-Id: Ibc98c678126c3b3189df7fcc043463b940951445
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
Renamed gui -> widgets.
Renamed declarative -> quick1.
With qbs the usage of qt.widgets and qt.quick1 with Qt4 is supported.
Change-Id: I6cadaf34527f1f880d74ced7d2d18dd9801b7de1
Reviewed-by: Alessandro Portale <alessandro.portale@nokia.com>
Add the complete line to the Search Results window,
including '#', "define", macro and macro value and
all possible white spaces between them.
Also covers the case of line continuation in macro
definitions from commit 3dec48557a.
Task-number: QTCREATORBUG-7217
Change-Id: I8b9d0c23d31ef76244833a9b9d67469c5c4a5635
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
When setting the environment variable
QTCREATOR_DUMP_FILENAME_WHILE_PARSING, the indexer will write the file
name of the file it is processing to stderr.
Change-Id: Iaed582512b87fd0584feb4e459a4094be32d5745
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This reverts commit e3e67467cfea5934f16a95385761455b0c495a0d
Reason is that it shows errors for calls to function-like macros. For example, any use of Q_DISABLE_COPY results in invalid errors.
Change-Id: I1fd1473ac5a30da5b9aebf6a3f0f11055bdbe8ad
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
- Highlight all function/methods (not just virtual methods).
- Highlight as a function even if number of arguments does not match. In
that case, add a diagnostic message to indicate there are too many/too
few arguments.
- Fix highlighting of parameters in function declarations.
These used to be handled indiferently, and they could be mistaken for
type or field references.
- Properly highlight template method calls.
Change-Id: I6ab463996dda47554839f482da47f561f76663a7
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
Now truncates the displayed line at the first Newline character after
the Macro name.
Task-number: QTCREATORBUG-7113
Change-Id: Ifb13c01d10b97098b54ac4346a80f0dcff3a35f3
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>
This rewrite fixes a couple of issues with the pre-processor. It now
supports:
- macros in macro bodies
- stringification of parameters [cpp.stringize]
- the concatenation operator [cpp.concat]
- #include MACRO_HERE
- defined() inside macro bodies used in pp-conditions.
Change-Id: Ifdb78041fb6afadf44f939a4bd66ce2832b8601f
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Only highlight the Macro name, not the whole definition line
or the parameter list in function-like Macros.
Change-Id: I5732dd5dd18cee150755ea35a5fbb67fdaed51c4
Reviewed-by: Francois Ferrand <thetypz@gmail.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
If the semantic highlighter does not take care of setting showing the wiggly
lines for diagnostics in the editor, the model manager will do.
Change-Id: Ie69fb798dd53d60ddca1668b8f586266a0daca4b
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Fix indentation of auto-completed Doxygen comments, as well as auto-
leading characters from the block, to make it work with both spaces and
tabs.
Change-Id: I6c1c1665675cc25e01983e6d39b472f1b1c9683e
Reviewed-by: Leandro Melo <leandro.melo@nokia.com>
When completing function name, scan text backwards to find if we are
trying to dereference the function.
Change-Id: I32cabecb651ff35d949600d9fdeb61c8e68ae98f
Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com>