diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-10-18 10:25:52 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-10-18 14:07:00 +0200 |
commit | e58906a9ed718b0e65a0f805c165e7bacf54d936 (patch) | |
tree | 7b90dd84042d7452020cf8f7433b4c758f264f6e /src/plugins/cpptools/cppcompletion_test.cpp | |
parent | c4c9b90b7f32b6b04026079ba5953bcf9730f562 (diff) | |
download | qt-creator-e58906a9ed718b0e65a0f805c165e7bacf54d936.tar.gz |
C++: Limit typedef resolving depth
This reverts commit 5be56c0 except for its tests. While it fixed the
problem described in the bug report, it also introduced regressions.
For now, we use a hard limit.
Change-Id: I19a85be454e3d7969371707e3eb1c3d42a16ecee
Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com>
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 | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index 856f96d004..3eed35b507 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -2070,6 +2070,55 @@ void CppToolsPlugin::test_completion_recursive_using_typedef_declarations() QCOMPARE(completions.size(), 0); } +void CppToolsPlugin::test_completion_recursive_typedefs_in_templates1() +{ + const QByteArray source = + "template<typename From>\n" + "struct simplify_type {\n" + " typedef From SimpleType;\n" + "};\n" + "\n" + "template<class To, class From>\n" + "struct cast_retty {\n" + " typedef typename cast_retty_wrap<To, From,\n" + " typename simplify_type<From>::SimpleType>::ret_type ret_type;\n" + "};\n" + "\n" + "template<class To, class From, class SimpleFrom>\n" + "struct cast_retty_wrap {\n" + " typedef typename cast_retty<To, SimpleFrom>::ret_type ret_type;\n" + "};\n" + "\n" + "void f()\n" + "{\n" + " @;\n" + "}\n" + ; + CompletionTestCase test(source, "cast_retty<T1, T2>::ret_type."); + + const QStringList completions = test.getCompletions(); + QCOMPARE(completions.size(), 0); +} + +void CppToolsPlugin::test_completion_recursive_typedefs_in_templates2() +{ + const QByteArray source = + "template<class T>\n" + "struct recursive {\n" + " typedef typename recursive<T>::ret_type ret_type;\n" + "};\n" + "\n" + "void f()\n" + "{\n" + " @;\n" + "}\n" + ; + CompletionTestCase test(source, "recursive<T1>::ret_type.foo"); + + const QStringList completions = test.getCompletions(); + QCOMPARE(completions.size(), 0); +} + void CppToolsPlugin::test_completion_prefix_first_QTCREATORBUG_8737() { const QByteArray source = @@ -2740,55 +2789,6 @@ void CppToolsPlugin::test_completion_template_parameter_defined_inside_scope_of_ QVERIFY(completions.contains(QLatin1String("bar"))); } -void CppToolsPlugin::test_completion_recursive_typedefs_in_templates1() -{ - const QByteArray source = - "template<typename From>\n" - "struct simplify_type {\n" - " typedef From SimpleType;\n" - "};\n" - "\n" - "template<class To, class From>\n" - "struct cast_retty {\n" - " typedef typename cast_retty_wrap<To, From,\n" - " typename simplify_type<From>::SimpleType>::ret_type ret_type;\n" - "};\n" - "\n" - "template<class To, class From, class SimpleFrom>\n" - "struct cast_retty_wrap {\n" - " typedef typename cast_retty<To, SimpleFrom>::ret_type ret_type;\n" - "};\n" - "\n" - "void f()\n" - "{\n" - " @;\n" - "}\n" - ; - CompletionTestCase test(source, "cast_retty<T1, T2>::ret_type."); - - const QStringList completions = test.getCompletions(); - QCOMPARE(completions.size(), 0); -} - -void CppToolsPlugin::test_completion_recursive_typedefs_in_templates2() -{ - const QByteArray source = - "template<class T>\n" - "struct recursive {\n" - " typedef typename recursive<To>::ret_type ret_type;\n" - "};\n" - "\n" - "void f()\n" - "{\n" - " @;\n" - "}\n" - ; - CompletionTestCase test(source, "recursive<T1>::ret_type.foo"); - - const QStringList completions = test.getCompletions(); - QCOMPARE(completions.size(), 0); -} - void CppToolsPlugin::test_completion_signals_hide_QPrivateSignal() { const QByteArray source = |