From 89cc8993c9ee6c1e1726bee2dc81d62fd31e73c2 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Tue, 20 Jul 2010 10:44:07 +0200 Subject: [PATCH] Handle shadow declarations. --- src/plugins/cppeditor/cppquickfix.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/cppquickfix.cpp b/src/plugins/cppeditor/cppquickfix.cpp index 41589f97937..1f5286e5d47 100644 --- a/src/plugins/cppeditor/cppquickfix.cpp +++ b/src/plugins/cppeditor/cppquickfix.cpp @@ -1513,7 +1513,20 @@ public: if (binary->left_expression && binary->right_expression && tokenAt(binary->binary_op_token).is(T_EQUAL)) { if (isCursorOn(binary->left_expression) && binary->left_expression->asSimpleName() != 0) { SimpleNameAST *nameAST = binary->left_expression->asSimpleName(); - if (context().lookup(nameAST->name, scopeAt(nameAST->firstToken())).isEmpty()) { + const QList<LookupItem> results = context().lookup(nameAST->name, scopeAt(nameAST->firstToken())); + Declaration *decl = 0; + foreach (const LookupItem &r, results) { + if (! r.declaration()) + continue; + else if (Declaration *d = r.declaration()->asDeclaration()) { + if (! d->type()->isFunctionType()) { + decl = d; + break; + } + } + } + + if (! decl) { binaryAST = binary; typeOfExpression.init(document(), snapshot(), context().bindings()); return index; -- GitLab