From df5d9f99fbff91c4bea44264db1a3e4f56848ac1 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gorszkowski Date: Mon, 31 Mar 2014 13:10:06 +0200 Subject: C++: fix findusage for member of typedefed anonymous struct Task-number: QTCREATORBUG-11859 Task-number: QTCREATORBUG-11860 Change-Id: I7484b3b88daefbb3c76bb86a9b573e8291072872 Reviewed-by: Orgad Shaneh Reviewed-by: Nikolai Kosjar (cherry picked from commit 5416557a0b9247e911180a7cce4a5ed3b0c0f351) Reviewed-by: Przemyslaw Gorszkowski Reviewed-by: Eike Ziller --- src/libs/cplusplus/LookupContext.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/libs/cplusplus/LookupContext.cpp') diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index a1a2eeb822..05f5900edc 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -686,7 +686,7 @@ void ClassOrNamespace::lookup_helper(const Name *name, ClassOrNamespace *binding for (; cit != citEnd; ++cit) { const AnonymousNameId *anonymousNameId = cit.key(); ClassOrNamespace *a = cit.value(); - if (!binding->_declaredAnonymouses.contains(anonymousNameId)) + if (!binding->_declaredOrTypedefedAnonymouses.contains(anonymousNameId)) lookup_helper(name, a, result, processed, binding->_templateId); } } @@ -1591,10 +1591,11 @@ bool CreateBindings::visit(Declaration *decl) } } } - } else if (Class *clazz = decl->type()->asClassType()) { + } + if (Class *clazz = decl->type()->asClassType()) { if (const Name *name = clazz->name()) { if (const AnonymousNameId *anonymousNameId = name->asAnonymousNameId()) - _currentClassOrNamespace->_declaredAnonymouses.insert(anonymousNameId); + _currentClassOrNamespace->_declaredOrTypedefedAnonymouses.insert(anonymousNameId); } } return false; -- cgit v1.2.1 From 5d76b4339a717cd944c4a3c27eac860b8111d645 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gorszkowski Date: Tue, 1 Apr 2014 10:32:13 +0200 Subject: C++: nested class with enclosing template class The parent of instantiation of nested class of template class should be the instantiation of enclosing template class. Task-number: QTCREATORBUG-11752 Change-Id: I8875c738848b85731f5ea88a60da190b4b0ad18f Reviewed-by: Orgad Shaneh Reviewed-by: Nikolai Kosjar Reviewed-by: Eike Ziller --- src/libs/cplusplus/LookupContext.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/libs/cplusplus/LookupContext.cpp') diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 05f5900edc..b80ca122bd 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1268,6 +1268,7 @@ void ClassOrNamespace::NestedClassInstantiator::instantiate(ClassOrNamespace *en } } + nestedClassOrNamespaceInstantiation->_parent = enclosingTemplateClassInstantiation; instantiate(nestedClassOrNamespace, nestedClassOrNamespaceInstantiation); enclosingTemplateClassInstantiation->_classOrNamespaces[nestedName] = -- cgit v1.2.1