diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index a034e169db5..ef4a766fd70 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1001,13 +1001,11 @@ LookupScope *LookupScopePrivate::lookupType_helper( } if (const QualifiedNameId *qName = name->asQualifiedNameId()) { - - ProcessedSet innerProcessed; if (! qName->base()) - return globalNamespace()->d->lookupType_helper(qName->name(), &innerProcessed, true, origin); + return globalNamespace()->d->lookupType_helper(qName->name(), processed, true, origin); if (LookupScope *binding = lookupType_helper(qName->base(), processed, true, origin)) - return binding->d->lookupType_helper(qName->name(), &innerProcessed, false, origin); + return binding->d->lookupType_helper(qName->name(), processed, false, origin); return 0; diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index b7ede1021c9..4a5763cc100 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -3235,6 +3235,24 @@ void CppToolsPlugin::test_completion_data() << QLatin1String("Foo") << QLatin1String("bar")); + QTest::newRow("typedef for templates in namespace") << _( + "namespace N {\n" + "\n" + "struct Data { int x; };\n" + "template struct Foo { T member; };\n" + "typedef Foo Bar;\n" + "\n" + "} // N\n" + "\n" + "\n" + "void f()\n" + "{\n" + " N::Bar o;\n" + " @\n" + "}\n" + ) << _("o.member.") << (QStringList() + << QLatin1String("Data") + << QLatin1String("x")); } void CppToolsPlugin::test_completion_member_access_operator()