summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2012-10-23 23:08:19 +0200
committerErik Verbruggen <erik.verbruggen@digia.com>2012-10-24 11:10:23 +0200
commite53f4352194a2307d77cea923c2473812a8647b9 (patch)
treef241f5bc184aaeca8c61191fc00333545ffebe6c /src/plugins/cpptools/cppcompletion_test.cpp
parent40a6f0b1cad4274216e3a6c6759eeebc7b04494e (diff)
downloadqt-creator-e53f4352194a2307d77cea923c2473812a8647b9.tar.gz
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 <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp39
1 files changed, 39 insertions, 0 deletions
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 <typename T> struct SuperClass\n"
+ "{\n"
+ " typedef T Type;\n"
+ " Type super_class_type;\n"
+ "};\n"
+ "}\n"
+ "\n"
+ "template <typename T>\n"
+ "struct Class;\n"
+ "\n"
+ "template <typename T, typename S>\n"
+ "struct ClassRecurse : Class<S>\n"
+ "{\n"
+ " T class_recurse_t;\n"
+ " S class_recurse_s;\n"
+ "};\n"
+ "\n"
+ "template <typename T>\n"
+ "struct Class : ClassRecurse< T, typename ::NS::SuperClass<T>::Type >\n"
+ "{\n"
+ " T class_t;\n"
+ "};\n"
+ "\n"
+ "Class<int> 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;
+
}