diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2013-01-19 13:17:34 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2013-01-22 11:35:25 +0100 |
commit | 23844410fdc100342860e400a62e86c408ac4605 (patch) | |
tree | 8f9eb0d32a53cd6465b7ec76a206a37798d34b50 /tests/auto/cplusplus/findusages/tst_findusages.cpp | |
parent | bc137f36a76e6a4f6878ab86cc778fcb41d6a826 (diff) | |
download | qt-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.cpp | 46 |
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" |