From 81721f678122bc66213b5f2a5fbf36c43e5e1a35 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 19 May 2015 20:25:13 +0300 Subject: [PATCH] C++: Fix resolving of recursive typedef Use-case: template struct Temp { typedef _Tp value_type; }; struct Foo { int bar; }; void func() { Temp >::value_type::value_type *p; p->bar; // bar not highlighted } Task-number: QTCREATORBUG-14237 Change-Id: Ie0b21b81526d610437ed2d2877083bb929c25047 Reviewed-by: Nikolai Kosjar --- src/libs/cplusplus/LookupContext.cpp | 2 +- src/plugins/cpptools/cppcompletion_test.cpp | 1 - tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/libs/cplusplus/LookupContext.cpp b/src/libs/cplusplus/LookupContext.cpp index 90b7f4e0765..edb68e65cca 100644 --- a/src/libs/cplusplus/LookupContext.cpp +++ b/src/libs/cplusplus/LookupContext.cpp @@ -1103,7 +1103,7 @@ LookupScope *LookupScopePrivate::lookupType_helper( foreach (Symbol *s, _symbols) { if (Class *klass = s->asClass()) { - if (klass->identifier() && klass->identifier()->match(name->identifier())) + if (klass->name() && klass->name()->match(name)) return q; } } diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index f8daef6d711..2fab0bed6ee 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -333,7 +333,6 @@ void CppToolsPlugin::test_completion() QEXPECT_FAIL("enum_in_function_in_struct_in_function_anon", "QTCREATORBUG-13757", Abort); QEXPECT_FAIL("enum_in_class_accessed_in_member_func_cxx11", "QTCREATORBUG-13757", Abort); QEXPECT_FAIL("enum_in_class_accessed_in_member_func_inline_cxx11", "QTCREATORBUG-13757", Abort); - QEXPECT_FAIL("recursive_instantiation_of_template_type", "QTCREATORBUG-14237", Abort); QCOMPARE(actualCompletions, expectedCompletions); } diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index 758d4de8d2d..36b9bd2facf 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -1203,7 +1203,6 @@ void tst_CheckSymbols::findField() source[position] = ' '; BaseTestCase tc(source); Use use = tc.findUse(line, column); - QEXPECT_FAIL("recursive_instantiation_of_template_type", "QTCREATORBUG-14237", Abort); QVERIFY(use.isValid()); QVERIFY(use.kind == Highlighting::FieldUse); }