C++: Cleanup LookupContext

Since the cache is now more reliable, some workarounds and optimizations
in the instantiation process are not needed anymore.

Also avoid instantiation of base classes when expandTemplates is
disabled.

As a bonus, we now resolve decltype of template function for a type that is not
referenced anywhere but in the decltype.

Change-Id: Idf42ba7280992db477c9aa62bb1815b27174594d
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2015-05-22 15:12:26 +03:00
committed by Orgad Shaneh
parent 873408c594
commit 7bed5cd3b6
2 changed files with 137 additions and 252 deletions

View File

@@ -3212,6 +3212,29 @@ void CppToolsPlugin::test_completion_data()
) << _("s.") << (QStringList()
<< QLatin1String("Foo")
<< QLatin1String("bar"));
QTest::newRow("nested_instantiation_typedefed_decltype_declaration_of_template_function") << _(
"template <typename T, typename D = T>\n"
"struct Temp\n"
"{\n"
" struct Nested\n"
" {\n"
" template<typename U> static T* __test(...);\n"
" typedef decltype(__test<D>(0)) type;\n"
" };\n"
"};\n"
"\n"
"struct Foo { int bar; };\n"
"\n"
"void func()\n"
"{\n"
" Temp<Foo>::Nested::type s;\n"
" @\n"
"}\n"
) << _("s.") << (QStringList()
<< QLatin1String("Foo")
<< QLatin1String("bar"));
}
void CppToolsPlugin::test_completion_member_access_operator()