summaryrefslogtreecommitdiff
path: root/tests/auto/cplusplus/findusages/tst_findusages.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2012-10-25 16:22:42 +0200
committerNikolai Kosjar <nikolai.kosjar@digia.com>2012-11-07 13:36:20 +0100
commit9f38f7bfbc19a0a94c69f95bd8ad5ac2a8471df9 (patch)
treeea560a16954cfa6355f79b0d480b0a58eca9ef89 /tests/auto/cplusplus/findusages/tst_findusages.cpp
parentbe516c7c6ef73df947b4392bb0efe5a532f00f5c (diff)
downloadqt-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.cpp41
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