diff --git a/tests/auto/cplusplus/ast/tst_ast.cpp b/tests/auto/cplusplus/ast/tst_ast.cpp index 958017a42cd8a12396dbcef3497d8351b0eb683d..24fbe7865faacf5ef3d50fb81f9828bb7d6ed878 100644 --- a/tests/auto/cplusplus/ast/tst_ast.cpp +++ b/tests/auto/cplusplus/ast/tst_ast.cpp @@ -44,15 +44,17 @@ private slots: void gcc_attributes_1(); // expressions - void simple_name(); - void template_id(); + void simple_name_1(); + void template_id_1(); void new_expression_1(); void new_expression_2(); void condition_1(); void init_1(); // statements - void if_statement(); + void if_statement_1(); + void if_statement_2(); + void if_statement_3(); void if_else_statement(); void while_statement(); void while_condition_statement(); @@ -99,7 +101,7 @@ void tst_AST::simple_declaration_1() QVERIFY(declStmt); } -void tst_AST::simple_name() +void tst_AST::simple_name_1() { QSharedPointer<TranslationUnit> unit(parseExpression("a")); AST *ast = unit->ast(); @@ -109,7 +111,7 @@ void tst_AST::simple_name() QCOMPARE(ast->asSimpleName()->identifier_token, 1U); } -void tst_AST::template_id() +void tst_AST::template_id_1() { QSharedPointer<TranslationUnit> unit(parseExpression("list<10>")); AST *ast = unit->ast(); @@ -255,7 +257,7 @@ void tst_AST::assignment_2() QVERIFY(ast->asExpressionStatement()); } -void tst_AST::if_statement() +void tst_AST::if_statement_1() { QSharedPointer<TranslationUnit> unit(parseStatement("if (a) b;")); @@ -283,6 +285,34 @@ void tst_AST::if_statement() QCOMPARE(id_expr->identifier_token, 5U); } +void tst_AST::if_statement_2() +{ + QSharedPointer<TranslationUnit> unit(parseStatement("if (x<0 && y>a);")); + + AST *ast = unit->ast(); + QVERIFY(ast != 0); + + IfStatementAST *stmt = ast->asIfStatement(); + QVERIFY(stmt != 0); + + QVERIFY(stmt->condition); + QVERIFY(stmt->condition->asBinaryExpression()); + QCOMPARE(unit->tokenKind(stmt->condition->asBinaryExpression()->binary_op_token), int(T_AMPER_AMPER)); +} + +void tst_AST::if_statement_3() +{ + QSharedPointer<TranslationUnit> unit(parseStatement("if (x<0 && x<0 && x<0 && x<0 && x<0 && x<0 && x<0);")); + + AST *ast = unit->ast(); + QVERIFY(ast != 0); + + IfStatementAST *stmt = ast->asIfStatement(); + QVERIFY(stmt != 0); + + QVERIFY(stmt->condition); +} + void tst_AST::if_else_statement() { QSharedPointer<TranslationUnit> unit(parseStatement("if (a) b; else c;"));