diff options
author | Przemyslaw Gorszkowski <pgorszkowski@gmail.com> | 2014-03-31 13:10:06 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2014-03-31 18:16:52 +0200 |
commit | 5416557a0b9247e911180a7cce4a5ed3b0c0f351 (patch) | |
tree | 5a40353de3ee2d1328563cab29161bfa8007d093 /tests/auto/cplusplus/findusages/tst_findusages.cpp | |
parent | 589945b7d3d41c97d075e756b259d709449ccc8c (diff) | |
download | qt-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.cpp | 44 |
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 = |