This time in the 'new' expression. Changed it to make
new C(1, abc...) and new C{1, abc}
work.
Change-Id: I7232798fd083b653ee04ef9ede386d6536133e16
Reviewed-by: hjk <qthjk@ovi.com>
Also drop the unused 'initializer' member from
RangeBasedForStatementAST.
Change-Id: I078ebbc85cafa643af4bfe62d698bf7de71360e4
Reviewed-by: hjk <qthjk@ovi.com>
This addresses the main memory leak revealed in QTCREATORBUG-7645.
The other leaks seem to have their origin in Qt.
Task-Number: QTCREATORBUG-7645.
Change-Id: I77f45449416c143b222ed5f5c905cba9674f95bb
Reviewed-by: Christian Kamm <kamm@incasoftware.de>
Make sure newly deprecated stuff is still available.
Change-Id: I9ebdfcd9a5ecee125a3c73f5f3254ae319d8b282
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
It'll be reused as the initializer expression for declarators
that are followed by "( expression-list )".
Change-Id: I6c76a76641941874ef1ed21daa7b6e057c6d170f
Reviewed-by: hjk <qthjk@ovi.com>
When the template and base template are actually the same.
Task-number: QTCREATORBUG-7830
Change-Id: Ibf8ab5f5ee8da544ec768a078bd272500d2dc604
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
Even if "expand funcion-like macros" is unset we still
perform the expansion in the case it's already doing
so - when it originally started from an object-like macro.
Task-number: QTCREATORBUG-7712
Change-Id: Ie2a24de227f757d195146477d48246472082d28a
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: hjk <qthjk@ovi.com>
There was an inconsistency, since the AST used in ResolveExpression
was not really the same previously computed. In the particular issue
below a crash could occur, for example, when using auto in a for
range loop.
Task-number: QTCREATORBUG-7828
Change-Id: I02958f434c3cf3b50609546003fc141674ee78d5
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
There was a fix for QTCREATORBUG-7730 in the case of nested
forward declarations in commit 74a458bca0.
However, it introduced regressions and actually didn't solve
the issue, since the behavior was hidden by another error fixed later.
The patch should properly fix the issue and the regression pointed
in QTCREATORBUG-7777.
Task-number: QTCREATORBUG-7730
Task-number: QTCREATORBUG-7777
Change-Id: I27397fefdc7cc9a60111761df1f76a01407886f7
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Previously we detected the duplicates by name and then processed
the missing ones, but this was not handling qualification properly.
Now we process the bases and only after lookup (making sure we
are talking about the *same* types) we add then if necessary.
Change-Id: Ic318b174d2174e24c24a4f2f1b612fbcb3f20491
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
While a "real" C++ type rarely contains parantheses or other
characters that are "special" for a regexp, gdb happily
sprinkles in things like "(anonymous namespace)::".
Killing Creator while trying to beautify such a name
is inaccpetable.
This should be followed up by patches handling the known
problematic cases properly.
Change-Id: I8cc8509f1d7df0a8780876cdba556e1cf7ec4a95
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Notice that a similar problem still exists for which we
need to fix the lexer when there's a C style commend which
ends with a backslash-newline.
Task-number: QTCREATORBUG-7713
Change-Id: I0f6d561703984f917fa5ed29de020ad0bdc5aaf0
Reviewed-by: David Schulz <david.schulz@nokia.com>
Reviewed-by: hjk <qthjk@ovi.com>
This fixes one of the issues mentioned in the report below.
THe other part will come in a separate patch.
Task-number: QTCREATORBUG-7730
Change-Id: I9f56a9bcec8a881dab3ab60f40c5b71f296466da
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This fixes a variety of issues regarding class completion
when templates are used as base classes. The test cases
show examples.
Task-number: QTCREATORBUG-4357
Change-Id: I764d5ce817a78e1b19336e5beab758ca9e10f34b
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Append the function return type in outline (after arguments), consistently with
variable type indication.
Change-Id: I1cc6d69634fc83227eb7fc9e3a0ee2ad6ca6ace8
Reviewed-by: Leandro Melo <leandro.melo@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>
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>
Do not expand function-like macros at all when there's a mismatch
in the parameter/argument count.
The report below raises the issue but its expected result is not
correct. This would be the more appropriate fix.
Task-number: QTCREATORBUG-7225
Change-Id: Ide8580faa7b724d3e8b396ec1f899cc5ca7f9e7e
Reviewed-by: hjk <qthjk@ovi.com>