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-11 16:30:20 +0200
commit8f1b6656677344e9ca4b6798ddd900725c478b16 (patch)
tree86813a83f133731c70dd2b6202888bb05c067a04 /src/plugins/cpptools/cppcompletion_test.cpp
parentf1ed40a02cdb62bd80111f9b4969770215430389 (diff)
downloadqt-creator-8f1b6656677344e9ca4b6798ddd900725c478b16.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>
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 d3575c364e..fd691023f8 100644
--- a/src/plugins/cpptools/cppcompletion_test.cpp
+++ b/src/plugins/cpptools/cppcompletion_test.cpp
@@ -2273,3 +2273,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);
+}