diff options
author | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-09-16 11:30:39 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@nokia.com> | 2010-09-16 11:31:07 +0200 |
commit | 3edb0a8480357fc2f078d62dfdb2ac0f2fa5cc17 (patch) | |
tree | b894f4253061f16cc8affffe651883825cc31e46 /tests | |
parent | 0924aaff47086054bb00b9a6509f6e374146f633 (diff) |
C++: Added unittest for 5a1924f1a06e31105b5f7823cb6a5f5f20513f49.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/cplusplus/ast/tst_ast.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 53406e3a192..af819e871f9 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -56,6 +56,9 @@ private slots: void conditional_1(); void throw_1(); + // possible declaration-or-expression statements + void call_call_1(); + // statements void if_statement_1(); void if_statement_2(); @@ -356,6 +359,47 @@ void tst_AST::throw_1() QVERIFY(ast->asExpressionStatement()); } +void tst_AST::call_call_1() +{ + QSharedPointer<TranslationUnit> unit(parseStatement("method()->call();")); + AST *ast = unit->ast(); + QVERIFY(ast != 0); + + ExpressionStatementAST *exprStmt = ast->asExpressionStatement(); + QVERIFY(exprStmt); + + ExpressionAST *expr = exprStmt->expression; + QVERIFY(expr); + + CallAST *memberCall = expr->asCall(); + QVERIFY(memberCall); + QVERIFY(memberCall->base_expression); + QVERIFY(!memberCall->expression_list); + + MemberAccessAST *member_xs = memberCall->base_expression->asMemberAccess(); + QVERIFY(member_xs); + QVERIFY(member_xs->member_name); + SimpleNameAST *member_name = member_xs->member_name->asSimpleName(); + QVERIFY(member_name); + QVERIFY(member_name->identifier_token); + QCOMPARE(unit->spell(member_name->identifier_token), "call"); + + QCOMPARE(unit->tokenKind(member_xs->access_token), (int) T_ARROW); + + QVERIFY(member_xs->base_expression); + CallAST *method_call = member_xs->base_expression->asCall(); + QVERIFY(method_call); + QVERIFY(!method_call->expression_list); + QVERIFY(method_call->base_expression); + IdExpressionAST *member_expr = method_call->base_expression->asIdExpression(); + QVERIFY(member_expr); + QVERIFY(member_expr->name); + SimpleNameAST *member_name2 = member_expr->name->asSimpleName(); + QVERIFY(member_name2); + QVERIFY(member_name2->identifier_token); + QCOMPARE(unit->spell(member_name2->identifier_token), "method"); +} + void tst_AST::function_call_1() { QSharedPointer<TranslationUnit> unit(parseStatement("retranslateUi(blah);")); |