diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2011-10-26 14:35:52 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2011-10-26 15:03:12 +0200 |
commit | c24bd7c411216ac9ce69a69ac7b1de6bb29df48a (patch) | |
tree | e731936a346e96394adaa80558b8099bcd3a234d /src/plugins | |
parent | 36d70589f200c4970261af0b7b1332fef19adece (diff) | |
download | qt-creator-c24bd7c411216ac9ce69a69ac7b1de6bb29df48a.tar.gz |
C++: disambiguate cast expressions for highlighting.
Task-number: QTCREATORBUG-5606
Change-Id: Iaea9f2afc57e2f22f734c43bd22105e19d768224
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/cppeditor/cpplocalsymbols.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/cppeditor/cpplocalsymbols.cpp b/src/plugins/cppeditor/cpplocalsymbols.cpp index c5a2b7a2a8..167ce9da46 100644 --- a/src/plugins/cppeditor/cpplocalsymbols.cpp +++ b/src/plugins/cppeditor/cpplocalsymbols.cpp @@ -148,6 +148,23 @@ protected: return true; } + virtual bool visit(CastExpressionAST *ast) + { + if (ast->expression && ast->expression->asUnaryExpression()) { + TypeIdAST *typeId = ast->type_id->asTypeId(); + if (typeId && !typeId->declarator && typeId->type_specifier_list && !typeId->type_specifier_list->next) { + if (NamedTypeSpecifierAST *namedTypeSpec = typeId->type_specifier_list->value->asNamedTypeSpecifier()) { + if (checkLocalUse(namedTypeSpec->name, namedTypeSpec->firstToken())) { + accept(ast->expression); + return false; + } + } + } + } + + return true; + } + virtual bool visit(QtMemberDeclarationAST *ast) { if (tokenKind(ast->q_token) == T_Q_D) |