From 3edb0a8480357fc2f078d62dfdb2ac0f2fa5cc17 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen <erik.verbruggen@nokia.com> Date: Thu, 16 Sep 2010 11:30:39 +0200 Subject: [PATCH] C++: Added unittest for 5a1924f1a06e31105b5f7823cb6a5f5f20513f49. --- tests/auto/cplusplus/ast/tst_ast.cpp | 44 ++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) 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);")); -- GitLab