diff options
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/cpptools/cppcompletion_test.cpp | 49 | ||||
-rw-r--r-- | src/plugins/cpptools/cpptoolsplugin.h | 3 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp index 755d0d9b98..856f96d004 100644 --- a/src/plugins/cpptools/cppcompletion_test.cpp +++ b/src/plugins/cpptools/cppcompletion_test.cpp @@ -2740,6 +2740,55 @@ 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 = diff --git a/src/plugins/cpptools/cpptoolsplugin.h b/src/plugins/cpptools/cpptoolsplugin.h index da09cbe15e..2c30baf90f 100644 --- a/src/plugins/cpptools/cpptoolsplugin.h +++ b/src/plugins/cpptools/cpptoolsplugin.h @@ -184,6 +184,9 @@ private slots: void test_completion_local_type_and_member_5(); void test_completion_local_type_and_member_6(); + void test_completion_recursive_typedefs_in_templates1(); + void test_completion_recursive_typedefs_in_templates2(); + void test_completion_signals_hide_QPrivateSignal(); void test_format_pointerdeclaration_in_simpledeclarations(); |