diff --git a/tests/auto/cplusplus/semantic/tst_semantic.cpp b/tests/auto/cplusplus/semantic/tst_semantic.cpp index 09ed7c1c0973e95e689141b103187e801793a186..5a82429d54f0ed994d9869424c4fc18c3216af27 100644 --- a/tests/auto/cplusplus/semantic/tst_semantic.cpp +++ b/tests/auto/cplusplus/semantic/tst_semantic.cpp @@ -95,6 +95,7 @@ private slots: void function_declaration_2(); void function_definition_1(); void nested_class_1(); + void typedef_1(); }; void tst_Semantic::function_declaration_1() @@ -235,5 +236,33 @@ void tst_Semantic::nested_class_1() QCOMPARE(namedTy->name()->asNameId()->identifier(), objectId); } +void tst_Semantic::typedef_1() +{ + QSharedPointer<Document> doc = document( +"typedef struct {\n" +" int x, y;\n" +"} Point;\n" +"int main() {\n" +" Point pt;\n" +" pt.x = 1;\n" +"}\n" + ); + + QCOMPARE(doc->errorCount, 0U); + QCOMPARE(doc->globals->symbolCount(), 3U); + + Class *anonStruct = doc->globals->symbolAt(0)->asClass(); + QVERIFY(anonStruct); + QCOMPARE(anonStruct->memberCount(), 2U); + + Declaration *typedefPointDecl = doc->globals->symbolAt(1)->asDeclaration(); + QVERIFY(typedefPointDecl); + QVERIFY(typedefPointDecl->isTypedef()); + QCOMPARE(typedefPointDecl->type()->asClass(), anonStruct); + + Function *mainFun = doc->globals->symbolAt(2)->asFunction(); + QVERIFY(mainFun); +} + QTEST_APPLESS_MAIN(tst_Semantic) #include "tst_semantic.moc"