aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/cplusplus/ResolveExpression.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <[email protected]>2014-03-14 11:39:11 +0100
committerNikolai Kosjar <[email protected]>2014-03-25 15:52:39 +0100
commite3f59773113181e3f4ec0c3fd8caf5e7dd210ed7 (patch)
treeeb626ae908c69a4d50bd47849cff1f9ba68a21b1 /src/libs/cplusplus/ResolveExpression.cpp
parent46c083c2eb556463a4b2c8c45faa379aea229b40 (diff)
C++: nested class in function
Case when nested class declaration contains object name for this class. Example: void fun() { struct S { int i; } s; s.i; } Fixes: * highlighting * completion * tests Task-number: QTCREATORBUG-11710 Change-Id: I32e234f57655c388a87a199edc8be750d7bf823f Reviewed-by: Orgad Shaneh <[email protected]> Reviewed-by: Przemyslaw Gorszkowski <[email protected]> Reviewed-by: Nikolai Kosjar <[email protected]>
Diffstat (limited to 'src/libs/cplusplus/ResolveExpression.cpp')
-rw-r--r--src/libs/cplusplus/ResolveExpression.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/libs/cplusplus/ResolveExpression.cpp b/src/libs/cplusplus/ResolveExpression.cpp
index 9470efc2b4c..ffdaaf5b106 100644
--- a/src/libs/cplusplus/ResolveExpression.cpp
+++ b/src/libs/cplusplus/ResolveExpression.cpp
@@ -866,8 +866,12 @@ ClassOrNamespace *ResolveExpression::findClass(const FullySpecifiedType &origina
FullySpecifiedType ty = originalTy.simplified();
ClassOrNamespace *binding = 0;
- if (Class *klass = ty->asClassType())
- binding = _context.lookupType(klass, enclosingTemplateInstantiation);
+ if (Class *klass = ty->asClassType()) {
+ if (scope->isBlock())
+ binding = _context.lookupType(klass->name(), scope, enclosingTemplateInstantiation);
+ if (!binding)
+ binding = _context.lookupType(klass, enclosingTemplateInstantiation);
+ }
else if (NamedType *namedTy = ty->asNamedType())
binding = _context.lookupType(namedTy->name(), scope, enclosingTemplateInstantiation);