summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2011-10-26 14:35:52 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2011-10-26 15:03:12 +0200
commitc24bd7c411216ac9ce69a69ac7b1de6bb29df48a (patch)
treee731936a346e96394adaa80558b8099bcd3a234d /src/plugins
parent36d70589f200c4970261af0b7b1332fef19adece (diff)
downloadqt-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.cpp17
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)