diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2012-10-25 16:22:42 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2012-11-07 13:36:20 +0100 |
commit | 9f38f7bfbc19a0a94c69f95bd8ad5ac2a8471df9 (patch) | |
tree | ea560a16954cfa6355f79b0d480b0a58eca9ef89 /tests/auto/cplusplus/findusages/tst_findusages.cpp | |
parent | be516c7c6ef73df947b4392bb0efe5a532f00f5c (diff) | |
download | qt-creator-9f38f7bfbc19a0a94c69f95bd8ad5ac2a8471df9.tar.gz |
C++: Store lambda captures in the code model.
Done-with: Erik Verbruggen
Task-number: QTCREATORBUG-7968
Task-number: QTCREATORBUG-7949
Change-Id: I0cf727052d0a3536ed96ee894b18768c9538c213
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'tests/auto/cplusplus/findusages/tst_findusages.cpp')
-rw-r--r-- | tests/auto/cplusplus/findusages/tst_findusages.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp index e08138fe38..0137ac51bf 100644 --- a/tests/auto/cplusplus/findusages/tst_findusages.cpp +++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp @@ -77,7 +77,8 @@ class tst_FindUsages: public QObject private Q_SLOTS: void inlineMethod(); -// void lambdaArg(); + void lambdaCaptureByValue(); + void lambdaCaptureByReference(); // Qt keywords void qproperty_1(); @@ -124,15 +125,46 @@ void tst_FindUsages::inlineMethod() QCOMPARE(findUsages.references().size(), 2); } -#if 0 /* see QTCREATORBUG-7968 */ -void tst_FindUsages::lambdaArg() +void tst_FindUsages::lambdaCaptureByValue() { const QByteArray src = "\n" "void f() {\n" " int test;\n" " [test] { ++test; };\n" "}\n"; - Document::Ptr doc = Document::create("lambdaArg"); + Document::Ptr doc = Document::create("lambdaCaptureByValue"); + doc->setUtf8Source(src); + doc->parse(); + doc->check(); + + QVERIFY(doc->diagnosticMessages().isEmpty()); + QCOMPARE(doc->globalSymbolCount(), 1U); + + Snapshot snapshot; + snapshot.insert(doc); + + Function *f = doc->globalSymbolAt(0)->asFunction(); + QVERIFY(f); + QCOMPARE(f->memberCount(), 1U); + Block *b = f->memberAt(0)->asBlock(); + QCOMPARE(b->memberCount(), 2U); + Declaration *d = b->memberAt(0)->asDeclaration(); + QVERIFY(d); + QCOMPARE(d->name()->identifier()->chars(), "test"); + + FindUsages findUsages(src, doc, snapshot); + findUsages(d); + QCOMPARE(findUsages.usages().size(), 3); +} + +void tst_FindUsages::lambdaCaptureByReference() +{ + const QByteArray src = "\n" + "void f() {\n" + " int test;\n" + " [&test] { ++test; };\n" + "}\n"; + Document::Ptr doc = Document::create("lambdaCaptureByReference"); doc->setUtf8Source(src); doc->parse(); doc->check(); @@ -156,7 +188,6 @@ void tst_FindUsages::lambdaArg() findUsages(d); QCOMPARE(findUsages.usages().size(), 3); } -#endif #if 0 @interface Clazz {} +(void)method:(int)arg; @end |