summaryrefslogtreecommitdiff
path: root/tests/auto/cplusplus/findusages/tst_findusages.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2013-01-19 13:17:34 +0100
committerNikolai Kosjar <nikolai.kosjar@digia.com>2013-01-22 11:35:25 +0100
commit23844410fdc100342860e400a62e86c408ac4605 (patch)
tree8f9eb0d32a53cd6465b7ec76a206a37798d34b50 /tests/auto/cplusplus/findusages/tst_findusages.cpp
parentbc137f36a76e6a4f6878ab86cc778fcb41d6a826 (diff)
downloadqt-creator-23844410fdc100342860e400a62e86c408ac4605.tar.gz
C++ editor: support nested class of enclosing template
Fixing: * highlighting * tooltips * find usage * selecting Task-number: QTCREATORBUG-8245 Change-Id: I6e900799e43126706125b7e424567fca2b2c223e Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Diffstat (limited to 'tests/auto/cplusplus/findusages/tst_findusages.cpp')
-rw-r--r--tests/auto/cplusplus/findusages/tst_findusages.cpp46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp
index 0cc1381103..0d84cb515b 100644
--- a/tests/auto/cplusplus/findusages/tst_findusages.cpp
+++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp
@@ -90,6 +90,9 @@ private Q_SLOTS:
// void objc_methods();
// void objc_fields();
// void objc_classes();
+
+ // templates
+ void instantiateTemplateWithNestedClass();
};
void tst_FindUsages::inlineMethod()
@@ -351,5 +354,48 @@ void tst_FindUsages::qproperty_1()
QCOMPARE(findUsages.references().size(), 2);
}
+void tst_FindUsages::instantiateTemplateWithNestedClass()
+{
+ const QByteArray src = "\n"
+ "struct Foo\n"
+ "{ int bar; };\n"
+ "template <typename T>\n"
+ "struct Template\n"
+ "{\n"
+ " struct Nested\n"
+ " {\n"
+ " T t;\n"
+ " }nested;\n"
+ "};\n"
+ "void f()\n"
+ "{\n"
+ " Template<Foo> templateFoo;\n"
+ " templateFoo.nested.t.bar;\n"
+ "}\n"
+ ;
+
+ Document::Ptr doc = Document::create("simpleTemplate");
+ doc->setUtf8Source(src);
+ doc->parse();
+ doc->check();
+
+ QVERIFY(doc->diagnosticMessages().isEmpty());
+ QCOMPARE(doc->globalSymbolCount(), 3U);
+
+ Snapshot snapshot;
+ snapshot.insert(doc);
+
+ Class *classFoo = doc->globalSymbolAt(0)->asClass();
+ QVERIFY(classFoo);
+ QCOMPARE(classFoo->memberCount(), 1U);
+ Declaration *barDeclaration = classFoo->memberAt(0)->asDeclaration();
+ QVERIFY(barDeclaration);
+ QCOMPARE(barDeclaration->name()->identifier()->chars(), "bar");
+
+ FindUsages findUsages(src, doc, snapshot);
+ findUsages(barDeclaration);
+ QCOMPARE(findUsages.usages().size(), 2);
+}
+
QTEST_APPLESS_MAIN(tst_FindUsages)
#include "tst_findusages.moc"