diff --git a/tests/auto/cplusplus/findusages/tst_findusages.cpp b/tests/auto/cplusplus/findusages/tst_findusages.cpp index bebfea2b87d4e782ed07e16098abd32e78eccb92..90724c38dd9011ff8e290a04497936bbef46ab7c 100644 --- a/tests/auto/cplusplus/findusages/tst_findusages.cpp +++ b/tests/auto/cplusplus/findusages/tst_findusages.cpp @@ -48,6 +48,8 @@ class tst_FindUsages: public QObject Q_OBJECT private Q_SLOTS: + void inlineMethod(); + // Objective-C void objc_args(); // void objc_methods(); @@ -55,6 +57,42 @@ private Q_SLOTS: // void objc_classes(); }; +void tst_FindUsages::inlineMethod() +{ + const QByteArray src = "\n" + "class Tst {\n" + " int method(int arg) {\n" + " return arg;\n" + " }\n" + "};\n"; + Document::Ptr doc = Document::create("inlineMethod"); + doc->setSource(src); + doc->parse(); + doc->check(); + + QVERIFY(doc->diagnosticMessages().isEmpty()); + QCOMPARE(doc->globalSymbolCount(), 1U); + + Snapshot snapshot; + snapshot.insert(doc); + + Class *tst = doc->globalSymbolAt(0)->asClass(); + QVERIFY(tst); + QCOMPARE(tst->memberCount(), 1U); + Function *method = tst->memberAt(0)->asFunction(); + QVERIFY(method); + QCOMPARE(method->argumentCount(), 1U); + Argument *arg = method->argumentAt(0)->asArgument(); + QVERIFY(arg); + QCOMPARE(arg->identifier()->chars(), "arg"); + + FindUsages findUsages(doc, snapshot); + findUsages.setGlobalNamespaceBinding(bind(doc, snapshot)); + findUsages(arg); + QCOMPARE(findUsages.usages().size(), 2); + QCOMPARE(findUsages.references().size(), 2); +} + #if 0 @interface Clazz {} +(void)method:(int)arg; @end @implementation Clazz +(void)method:(int)arg {