@Override public void visitElseClause(ElseClauseTree tree) { if (tree.is(Kind.ELSE_CLAUSE) && tree.statements().get(0).is(Kind.IF_STATEMENT)) { ifStatementWithoutNesting.add((IfStatementTree) tree.statements().get(0)); } else { complexity.addComplexityWithoutNesting(tree.elseToken()); } visitWithNesting(tree.statements()); }
@Override public void visitElseClause(ElseClauseTree tree) { checkIndentation(tree.elseToken(), tree.statements()); super.visitElseClause(tree); }
@Test public void alternative_syntax() throws Exception { ElseClauseTree tree = parse("else : $stmt1; $stmt2; ", PHPLexicalGrammar.ALTERNATIVE_ELSE_CLAUSE); assertThat(tree.is(Kind.ALTERNATIVE_ELSE_CLAUSE)).isTrue(); assertThat(tree.elseToken().text()).isEqualTo("else"); assertThat(tree.colonToken().text()).isEqualTo(":"); assertThat(tree.statements()).hasSize(2); }
private static boolean isElseIf(ElseClauseTree elseClause) { return !elseClause.statements().isEmpty() && elseClause.statements().get(0).is(Kind.IF_STATEMENT); }
@Test public void standard_syntax_with_else() throws Exception { IfStatementTree tree = parse("if ($a) {} else {}", PHPLexicalGrammar.IF_STATEMENT); assertThat(tree.is(Kind.IF_STATEMENT)).isTrue(); assertThat(tree.ifToken().text()).isEqualTo("if"); assertThat(tree.condition()).isNotNull(); assertThat(tree.statements()).hasSize(1); ElseClauseTree elseClause = tree.elseClause(); assertThat(elseClause).isNotNull(); assertThat(elseClause.is(Kind.ELSE_CLAUSE)).isTrue(); assertThat(elseClause.statements()).hasSize(1); assertThat(tree.elseifClauses()).hasSize(0); assertThat(tree.colonToken()).isNull(); assertThat(tree.endifToken()).isNull(); assertThat(tree.eosToken()).isNull(); }
@Override public void visitIfStatement(IfStatementTree tree) { checkControlStructureOpenCurly(tree.condition().closeParenthesis(), getOpenCurlyIfBlock(tree.statements())); // Check else keyword ElseClauseTree elseClause = tree.elseClause(); if (elseClause != null) { checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseClause.elseToken()), elseClause.elseToken()); } tree.elseifClauses().stream() .map(ElseifClauseTree::elseifToken) .forEach(elseIfClause -> checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseIfClause), elseIfClause)); super.visitIfStatement(tree); }
private static boolean isElseIf(ElseClauseTree elseClause) { return !elseClause.statements().isEmpty() && elseClause.statements().get(0).is(Kind.IF_STATEMENT); }
@Override public void visitElseClause(ElseClauseTree tree) { checkIndentation(tree.elseToken(), tree.statements()); super.visitElseClause(tree); }
@Override public void visitIfStatement(IfStatementTree tree) { checkControlStructureOpenCurly(tree.condition().closeParenthesis(), getOpenCurlyIfBlock(tree.statements())); // Check else keyword ElseClauseTree elseClause = tree.elseClause(); if (elseClause != null) { checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseClause.elseToken()), elseClause.elseToken()); } tree.elseifClauses().stream() .map(ElseifClauseTree::elseifToken) .forEach(elseIfClause -> checkCloseCurlyNextToKeyword(new TokenVisitor(tree).prevToken(elseIfClause), elseIfClause)); super.visitIfStatement(tree); }
@Override public void visitElseClause(ElseClauseTree tree) { if (tree.is(Kind.ELSE_CLAUSE) && tree.statements().get(0).is(Kind.IF_STATEMENT)) { ifStatementWithoutNesting.add((IfStatementTree) tree.statements().get(0)); } else { complexity.addComplexityWithoutNesting(tree.elseToken()); } visitWithNesting(tree.statements()); }
protected List<Tree> getClauses(IfStatementTree ifStatement) { Preconditions.checkArgument(ifStatement.is(Kind.IF_STATEMENT)); List<Tree> clauses = new ArrayList<>(); clauses.add(ifStatement); clauses.addAll(ifStatement.elseifClauses()); ElseClauseTree currentElseClause = ifStatement.elseClause(); while (currentElseClause != null) { StatementTree statement = currentElseClause.statements().get(0); if (statement.is(Kind.IF_STATEMENT)) { IfStatementTree nestedIfStatement = (IfStatementTree) statement; clauses.add(nestedIfStatement); checkedIfStatements.add(nestedIfStatement); currentElseClause = nestedIfStatement.elseClause(); } else { clauses.add(currentElseClause); currentElseClause = null; } } return clauses; }
@Override public void visitElseClause(ElseClauseTree tree) { checkControlStructureOpenCurly(tree.elseToken(), getOpenCurlyIfBlock(tree.statements())); super.visitElseClause(tree); }
@Override public void visitElseClause(ElseClauseTree tree) { super.visitElseClause(tree); if (tree.is(Tree.Kind.ELSE_CLAUSE) && !tree.statements().get(0).is(Tree.Kind.IF_STATEMENT)) { checkStatement(tree.statements().get(0), tree.elseToken()); } }
protected List<Tree> getClauses(IfStatementTree ifStatement) { Preconditions.checkArgument(ifStatement.is(Kind.IF_STATEMENT)); List<Tree> clauses = new ArrayList<>(); clauses.add(ifStatement); clauses.addAll(ifStatement.elseifClauses()); ElseClauseTree currentElseClause = ifStatement.elseClause(); while (currentElseClause != null) { StatementTree statement = currentElseClause.statements().get(0); if (statement.is(Kind.IF_STATEMENT)) { IfStatementTree nestedIfStatement = (IfStatementTree) statement; clauses.add(nestedIfStatement); checkedIfStatements.add(nestedIfStatement); currentElseClause = nestedIfStatement.elseClause(); } else { clauses.add(currentElseClause); currentElseClause = null; } } return clauses; }
@Override public void visitElseClause(ElseClauseTree tree) { checkControlStructureOpenCurly(tree.elseToken(), getOpenCurlyIfBlock(tree.statements())); super.visitElseClause(tree); }
@Override public void visitElseClause(ElseClauseTree tree) { super.visitElseClause(tree); if (tree.is(Tree.Kind.ELSE_CLAUSE) && !tree.statements().get(0).is(Tree.Kind.IF_STATEMENT)) { checkStatement(tree.statements().get(0), tree.elseToken()); } }
private static StatementTree getConditionalStatement(Tree tree) { List<StatementTree> statementTrees; if (tree.is(Tree.Kind.IF_STATEMENT)) { statementTrees = ((IfStatementTree) tree).statements(); } else if (tree.is(Tree.Kind.ELSEIF_CLAUSE)) { statementTrees = ((ElseifClauseTree) tree).statements(); } else { statementTrees = ((ElseClauseTree) tree).statements(); } return statementTrees.get(0); }
@Override public void visitElseClause(ElseClauseTree tree) { super.visitElseClause(tree); if (tree.is(Tree.Kind.ELSE_CLAUSE)) { checkBlock(tree.statements().get(0), getLastToken(tree.elseToken())); } }
private static StatementTree getLastStatementOfIf(StatementTree statement) { if (!statement.is(Kind.IF_STATEMENT)) { return statement; } List<StatementTree> childStatements; IfStatementTree ifStatement = (IfStatementTree) statement; ElseClauseTree elseClause = ifStatement.elseClause(); List<ElseifClauseTree> elseifClause = ifStatement.elseifClauses(); if (elseClause != null) { childStatements = elseClause.statements(); } else if (!elseifClause.isEmpty()) { childStatements = elseifClause.get(elseifClause.size() - 1).statements(); } else { childStatements = ifStatement.statements(); } return getLastStatementOfIf(childStatements.get(childStatements.size() - 1)); }
@Override public void visitElseClause(ElseClauseTree tree) { super.visitElseClause(tree); if (tree.is(Tree.Kind.ELSE_CLAUSE)) { checkBlock(tree.statements().get(0), getLastToken(tree.elseToken())); } }