diff options
| author | Przemyslaw Gorszkowski <[email protected]> | 2014-03-14 11:39:11 +0100 |
|---|---|---|
| committer | Nikolai Kosjar <[email protected]> | 2014-03-25 15:52:39 +0100 |
| commit | e3f59773113181e3f4ec0c3fd8caf5e7dd210ed7 (patch) | |
| tree | eb626ae908c69a4d50bd47849cff1f9ba68a21b1 /src/libs/cplusplus/ResolveExpression.cpp | |
| parent | 46c083c2eb556463a4b2c8c45faa379aea229b40 (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.cpp | 8 |
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); |
