From e53f4352194a2307d77cea923c2473812a8647b9 Mon Sep 17 00:00:00 2001 From: Przemyslaw Gorszkowski Date: Tue, 23 Oct 2012 23:08:19 +0200 Subject: Fix crashes when cyclic inheritance More complex situation. Base class is a template and derived class is a template. Task-number: QTCREATORBUG-8072 Task-number: QTCREATORBUG-7962 Change-Id: I7e8aa727fccd2bd4a779e6fe781553cd12196682 Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/cppcompletion_test.cpp | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'src/plugins/cpptools/cppcompletion_test.cpp') diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index 68229c6371..f36ac54a6c 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -930,4 +930,43 @@ void CppToolsPlugin::test_completion_cyclic_inheritance_data() QTest::newRow("case: indirect cyclic inheritance with templates") << code << completions; + completions.clear(); + code = "\n" + "namespace NS\n" + "{\n" + "template struct SuperClass\n" + "{\n" + " typedef T Type;\n" + " Type super_class_type;\n" + "};\n" + "}\n" + "\n" + "template \n" + "struct Class;\n" + "\n" + "template \n" + "struct ClassRecurse : Class\n" + "{\n" + " T class_recurse_t;\n" + " S class_recurse_s;\n" + "};\n" + "\n" + "template \n" + "struct Class : ClassRecurse< T, typename ::NS::SuperClass::Type >\n" + "{\n" + " T class_t;\n" + "};\n" + "\n" + "Class c;\n" + "c.\n" + "@\n" + ; + completions.append("Class"); + completions.append("ClassRecurse"); + completions.append("class_t"); + completions.append("class_recurse_s"); + completions.append("class_recurse_t"); + QTest::newRow("case: direct cyclic inheritance with templates, more complex situation") + << code << completions; + } -- cgit v1.2.1