diff options
| author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2012-10-23 23:08:19 +0200 |
|---|---|---|
| committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2012-10-24 11:10:23 +0200 |
| commit | e53f4352194a2307d77cea923c2473812a8647b9 (patch) | |
| tree | f241f5bc184aaeca8c61191fc00333545ffebe6c /src/plugins/cpptools/cppcompletion_test.cpp | |
| parent | 40a6f0b1cad4274216e3a6c6759eeebc7b04494e (diff) | |
| download | qt-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.cpp | 39 |
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; + } |
