summaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp49
-rw-r--r--src/plugins/cpptools/cpptoolsplugin.h3
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();