@Test public void test() throws Exception { DoWhileStatementTree tree = parse("do {} while ($a) ;", PHPLexicalGrammar.DO_WHILE_STATEMENT); assertThat(tree.is(Kind.DO_WHILE_STATEMENT)).isTrue(); assertThat(tree.doToken().text()).isEqualTo("do"); assertThat(tree.condition().is(Kind.PARENTHESISED_EXPRESSION)).isTrue(); assertThat(tree.statement().is(Kind.BLOCK)).isTrue(); assertThat(tree.whileToken().text()).isEqualTo("while"); assertThat(tree.eosToken().text()).isEqualTo(";"); }
private PhpCfgBlock buildDoWhileStatement(DoWhileStatementTree tree, PhpCfgBlock successor) { ForwardingBlock linkToBody = createForwardingBlock(); PhpCfgBranchingBlock conditionBlock = createBranchingBlock(tree, linkToBody, successor); conditionBlock.addElement(tree.condition().expression()); addBreakable(successor, conditionBlock); PhpCfgBlock loopBodyBlock = buildSubFlow(ImmutableList.of(tree.statement()), conditionBlock); removeBreakable(); linkToBody.setSuccessor(loopBodyBlock); return createSimpleBlock(loopBodyBlock); }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { incrementComplexity(tree.doToken()); super.visitDoWhileStatement(tree); }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { scan(tree.statement()); // ignore condition }
private PhpCfgBlock buildDoWhileStatement(DoWhileStatementTree tree, PhpCfgBlock successor) { ForwardingBlock linkToBody = createForwardingBlock(); PhpCfgBranchingBlock conditionBlock = createBranchingBlock(tree, linkToBody, successor); conditionBlock.addElement(tree.condition().expression()); addBreakable(successor, conditionBlock); PhpCfgBlock loopBodyBlock = buildSubFlow(ImmutableList.of(tree.statement()), conditionBlock); removeBreakable(); linkToBody.setSuccessor(loopBodyBlock); return createSimpleBlock(loopBodyBlock); }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { incrementComplexity(tree.doToken()); super.visitDoWhileStatement(tree); }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { scan(tree.statement()); // ignore condition }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { enterBlock(tree.doToken()); super.visitDoWhileStatement(tree); leaveBlock(); }
@Override public void visitDoWhileStatement(DoWhileStatementTree tree) { enterBlock(tree.doToken()); super.visitDoWhileStatement(tree); leaveBlock(); }