summaryrefslogtreecommitdiff
path: root/tests/auto/cplusplus/findusages/tst_findusages.cpp
diff options
context:
space:
mode:
authorPrzemyslaw Gorszkowski <pgorszkowski@gmail.com>2014-03-31 13:10:06 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2014-03-31 18:16:52 +0200
commit5416557a0b9247e911180a7cce4a5ed3b0c0f351 (patch)
tree5a40353de3ee2d1328563cab29161bfa8007d093 /tests/auto/cplusplus/findusages/tst_findusages.cpp
parent589945b7d3d41c97d075e756b259d709449ccc8c (diff)
downloadqt-creator-5416557a0b9247e911180a7cce4a5ed3b0c0f351.tar.gz
C++: fix findusage for member of typedefed anonymous struct
Task-number: QTCREATORBUG-11859 Task-number: QTCREATORBUG-11860 Change-Id: I7484b3b88daefbb3c76bb86a9b573e8291072872 Reviewed-by: Orgad Shaneh <orgads@gmail.com> 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.cpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp
index 7287cd154b..a19351d480 100644
--- a/tests/auto/cplusplus/findusages/tst_findusages.cpp
+++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp
@@ -104,6 +104,7 @@ private Q_SLOTS:
void templateFunctionParameters();
void anonymousClass_QTCREATORBUG8963();
+ void anonymousClass_QTCREATORBUG11859();
void using_insideGlobalNamespace();
void using_insideNamespace();
void using_insideFunction();
@@ -562,6 +563,49 @@ void tst_FindUsages::anonymousClass_QTCREATORBUG8963()
QCOMPARE(findUsages.usages().size(), 2);
}
+void tst_FindUsages::anonymousClass_QTCREATORBUG11859()
+{
+ const QByteArray src =
+ "struct Foo {\n"
+ "};\n"
+ "typedef struct {\n"
+ " int Foo;\n"
+ "} Struct;\n"
+ "void foo()\n"
+ "{\n"
+ " Struct s;\n"
+ " s.Foo;\n"
+ "}\n"
+ ;
+
+ Document::Ptr doc = Document::create("anonymousClass_QTCREATORBUG11859");
+ doc->setUtf8Source(src);
+ doc->parse();
+ doc->check();
+
+ QVERIFY(doc->diagnosticMessages().isEmpty());
+ QCOMPARE(doc->globalSymbolCount(), 4U);
+
+ Snapshot snapshot;
+ snapshot.insert(doc);
+
+ Class *fooAsStruct = doc->globalSymbolAt(0)->asClass();
+ QVERIFY(fooAsStruct);
+ Class *structSymbol = doc->globalSymbolAt(1)->asClass();
+ QVERIFY(structSymbol);
+ QCOMPARE(structSymbol->memberCount(), 1U);
+ Declaration *fooAsMemberOfAnonymousStruct = structSymbol->memberAt(0)->asDeclaration();
+ QVERIFY(fooAsMemberOfAnonymousStruct);
+ QCOMPARE(fooAsMemberOfAnonymousStruct->name()->identifier()->chars(), "Foo");
+
+ FindUsages findUsages(src, doc, snapshot);
+ findUsages(fooAsStruct);
+ QCOMPARE(findUsages.references().size(), 1);
+
+ findUsages(fooAsMemberOfAnonymousStruct);
+ QCOMPARE(findUsages.references().size(), 2);
+}
+
void tst_FindUsages::using_insideGlobalNamespace()
{
const QByteArray src =