aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@nokia.com>2010-09-16 11:30:39 +0200
committerErik Verbruggen <erik.verbruggen@nokia.com>2010-09-16 11:31:07 +0200
commit3edb0a8480357fc2f078d62dfdb2ac0f2fa5cc17 (patch)
treeb894f4253061f16cc8affffe651883825cc31e46 /tests
parent0924aaff47086054bb00b9a6509f6e374146f633 (diff)
C++: Added unittest for 5a1924f1a06e31105b5f7823cb6a5f5f20513f49.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/cplusplus/ast/tst_ast.cpp44
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);"));