diff options
author | Erik Verbruggen <erik.verbruggen@digia.com> | 2012-11-19 11:20:11 +0100 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2012-11-22 16:39:47 +0100 |
commit | cab6ed5e5133c1adf7f796254d7db5736215c217 (patch) | |
tree | a1573f0e1a76a02070d9846f7db18b8b10629e9e /tests/auto/cplusplus/findusages/tst_findusages.cpp | |
parent | 56966f3712b9ec2d790b7185d230d3193f261a62 (diff) | |
download | qt-creator-cab6ed5e5133c1adf7f796254d7db5736215c217.tar.gz |
Fix: no scope walking for name resolving after MemAccess operator
Change-Id: Ic093079fa65d8d749911fd9f5b0f629e9fe68a1e
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
Conflicts:
tests/auto/cplusplus/findusages/tst_findusages.cpp
Change-Id: I87d305e2d68582aa00b92f9599368615cd76ec74
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'tests/auto/cplusplus/findusages/tst_findusages.cpp')
-rw-r--r-- | tests/auto/cplusplus/findusages/tst_findusages.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp index f9b82adadf..dc1f765ee7 100644 --- a/tests/auto/cplusplus/findusages/tst_findusages.cpp +++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp @@ -77,6 +77,8 @@ class tst_FindUsages: public QObject private Q_SLOTS: void inlineMethod(); + void shadowedNames_1(); + void shadowedNames_2(); // Qt keywords void qproperty_1(); @@ -123,6 +125,69 @@ void tst_FindUsages::inlineMethod() QCOMPARE(findUsages.references().size(), 2); } +void tst_FindUsages::shadowedNames_1() +{ + const QByteArray src = "\n" + "int a();\n" + "struct X{ int a(); };\n" + "int X::a() {}\n" + "void f(X x) { x.a(); }\n" + "void g() { a(); }\n" + ; + + Document::Ptr doc = Document::create("shadowedNames_1"); + doc->setUtf8Source(src); + doc->parse(); + doc->check(); + + QVERIFY(doc->diagnosticMessages().isEmpty()); + QCOMPARE(doc->globalSymbolCount(), 5U); + + Snapshot snapshot; + snapshot.insert(doc); + + Declaration *d = doc->globalSymbolAt(0)->asDeclaration(); + QVERIFY(d); + QCOMPARE(d->name()->identifier()->chars(), "a"); + + FindUsages findUsages(src, doc, snapshot); + findUsages(d); + QCOMPARE(findUsages.usages().size(), 2); +} + +void tst_FindUsages::shadowedNames_2() +{ + const QByteArray src = "\n" + "int a();\n" + "struct X{ int a(); };\n" + "int X::a() {}\n" + "void f(X x) { x.a(); }\n" + "void g() { a(); }\n"; + + Document::Ptr doc = Document::create("shadowedNames_2"); + doc->setUtf8Source(src); + doc->parse(); + doc->check(); + + QVERIFY(doc->diagnosticMessages().isEmpty()); + QCOMPARE(doc->globalSymbolCount(), 5U); + + Snapshot snapshot; + snapshot.insert(doc); + + Class *c = doc->globalSymbolAt(1)->asClass(); + QVERIFY(c); + QCOMPARE(c->name()->identifier()->chars(), "X"); + QCOMPARE(c->memberCount(), 1U); + Declaration *d = c->memberAt(0)->asDeclaration(); + QVERIFY(d); + QCOMPARE(d->name()->identifier()->chars(), "a"); + + FindUsages findUsages(src, doc, snapshot); + findUsages(d); + QCOMPARE(findUsages.usages().size(), 3); +} + #if 0 @interface Clazz {} +(void)method:(int)arg; @end @implementation Clazz +(void)method:(int)arg { |