summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppcompletion_test.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2013-06-11 09:22:18 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-06-25 11:04:17 +0200
commit8aa8f225369603e1e9ea019ca043715b08a61e82 (patch)
tree494c3fe911e133e17a73d448f3964df725f079fd /src/plugins/cpptools/cppcompletion_test.cpp
parent1477729aa0590a6f5041164f56d8c7e8e8249d2e (diff)
downloadqt-creator-8aa8f225369603e1e9ea019ca043715b08a61e82.tar.gz
C++: Handle recursive auto declarations
Remember auto declarations we have already looked up and stop if we try it again. Task-number: QTCREATORBUG-9503 Change-Id: I989b11609c98bf197ce916d79c9d452294355053 Reviewed-by: Przemyslaw Gorszkowski <pgorszkowski@gmail.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com> (cherry picked from commit 8f1b6656677344e9ca4b6798ddd900725c478b16)
Diffstat (limited to 'src/plugins/cpptools/cppcompletion_test.cpp')
-rw-r--r--src/plugins/cpptools/cppcompletion_test.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/plugins/cpptools/cppcompletion_test.cpp b/src/plugins/cpptools/cppcompletion_test.cpp
index 11e380092b..44f9178cdb 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -1832,3 +1832,56 @@ void CppToolsPlugin::test_completion_crash_cloning_template_class_QTCREATORBUG93
QVERIFY(completions.contains(QLatin1String("Templ")));
QVERIFY(completions.contains(QLatin1String("f")));
}
+
+void CppToolsPlugin::test_completion_recursive_auto_declarations1_QTCREATORBUG9503()
+{
+ TestData data;
+ data.srcText =
+ "void f()\n"
+ "{\n"
+ " auto object2 = object1;\n"
+ " auto object1 = object2;\n"
+ " @;\n"
+ " // padding so we get the scope right\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("object1.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ QStringList completions = getCompletions(data);
+
+ QCOMPARE(completions.size(), 0);
+}
+
+void CppToolsPlugin::test_completion_recursive_auto_declarations2_QTCREATORBUG9503()
+{
+ TestData data;
+ data.srcText =
+ "void f()\n"
+ "{\n"
+ " auto object3 = object1;\n"
+ " auto object2 = object3;\n"
+ " auto object1 = object2;\n"
+ " @;\n"
+ " // padding so we get the scope right\n"
+ "}\n"
+ ;
+ setup(&data);
+
+ Utils::ChangeSet change;
+ QString txt = QLatin1String("object1.");
+ change.insert(data.pos, txt);
+ QTextCursor cursor(data.doc);
+ change.apply(&cursor);
+ data.pos += txt.length();
+
+ QStringList completions = getCompletions(data);
+
+ QCOMPARE(completions.size(), 0);
+}