private boolean simpleStmt(Statement stmt) { switch (stmt.getNodeType()) { case ASTNode.IF_STATEMENT: case ASTNode.DO_STATEMENT: case ASTNode.WHILE_STATEMENT: case ASTNode.FOR_STATEMENT: case ASTNode.ENHANCED_FOR_STATEMENT: case ASTNode.TRY_STATEMENT: return false; default: return true; } }
@Override public void endVisit(Statement node) { super.endVisit(node); if (node.getNodeType() == ASTNode.IF_STATEMENT || node.getNodeType() == ASTNode.WHILE_STATEMENT || node.getNodeType() == ASTNode.FOR_STATEMENT || node.getNodeType() == ASTNode.DO_STATEMENT || node.getNodeType() == ASTNode.SWITCH_STATEMENT) { if (showEndStatement) { minings.add(new EndStatementCodeMining(node, textEditor, viewer, endStatementMinLineNumber, provider)); } } }
/** * Check if a break statement is needed following the statement for a particular case. * * @param stmt * @return <code>true</code> if break needed, <code>false</code> if not */ private static boolean isBreakNeeded(Statement stmt) { switch (stmt.getNodeType()) { case ASTNode.BLOCK: { List stmts = ((Block)stmt).statements(); int size = stmts.size(); if (size == 0) { return true; } else { return isBreakNeeded((Statement)stmts.get(size-1)); } } case ASTNode.RETURN_STATEMENT: case ASTNode.THROW_STATEMENT: return false; default: return true; } }
private void handle(Statement body, ChildPropertyDescriptor bodyProperty) { if ((body.getFlags() & ASTNode.RECOVERED) != 0) return; Statement parent= (Statement)body.getParent(); if ((parent.getFlags() & ASTNode.RECOVERED) != 0) return; if (fRemoveUnnecessaryBlocksOnlyWhenReturnOrThrow) { if (!(body instanceof Block)) { if (body.getNodeType() != ASTNode.IF_STATEMENT && body.getNodeType() != ASTNode.RETURN_STATEMENT && body.getNodeType() != ASTNode.THROW_STATEMENT) { fResult.add(new AddBlockOperation(bodyProperty, body, parent)); } } else { if (RemoveBlockOperation.satisfiesCleanUpPrecondition(parent, bodyProperty, true)) { fResult.add(new RemoveBlockOperation(parent, bodyProperty)); } } } else if (fFindControlStatementsWithoutBlock) { if (!(body instanceof Block)) { fResult.add(new AddBlockOperation(bodyProperty, body, parent)); } } else if (fRemoveUnnecessaryBlocks) { if (RemoveBlockOperation.satisfiesCleanUpPrecondition(parent, bodyProperty, false)) { fResult.add(new RemoveBlockOperation(parent, bodyProperty)); } } }
private void handle(Statement body, ChildPropertyDescriptor bodyProperty) { if ((body.getFlags() & ASTNode.RECOVERED) != 0) return; Statement parent= (Statement)body.getParent(); if ((parent.getFlags() & ASTNode.RECOVERED) != 0) return; if (fRemoveUnnecessaryBlocksOnlyWhenReturnOrThrow) { if (!(body instanceof Block)) { if (body.getNodeType() != ASTNode.IF_STATEMENT && body.getNodeType() != ASTNode.RETURN_STATEMENT && body.getNodeType() != ASTNode.THROW_STATEMENT) { fResult.add(new AddBlockOperation(bodyProperty, body, parent)); } } else { if (RemoveBlockOperation.satisfiesCleanUpPrecondition(parent, bodyProperty, true)) { fResult.add(new RemoveBlockOperation(parent, bodyProperty)); } } } else if (fFindControlStatementsWithoutBlock) { if (!(body instanceof Block)) { fResult.add(new AddBlockOperation(bodyProperty, body, parent)); } } else if (fRemoveUnnecessaryBlocks) { if (RemoveBlockOperation.satisfiesCleanUpPrecondition(parent, bodyProperty, false)) { fResult.add(new RemoveBlockOperation(parent, bodyProperty)); } } }
@Override public boolean visit(IfStatement node) { final Statement thenStmt = getThenStatement(node); final Statement elseStmt = getElseStatement(node, thenStmt); if (isNullCheck(node.getExpression()) && thenStmt != null && elseStmt != null && thenStmt.getNodeType() == elseStmt.getNodeType() && simpleStmt(thenStmt)) { revertIfStatement(node, thenStmt, elseStmt); setResult(DO_NOT_VISIT_SUBTREE); return DO_NOT_VISIT_SUBTREE; } return VISIT_SUBTREE; }
/** * Return true if the statement falls through. * * @param stmt the statement * @return true if the statement falls through. */ public static boolean fallsThrough(Statement stmt) { final List<Statement> stmts = asList(stmt); if (stmts.isEmpty()) { return false; } final Statement lastStmt = stmts.get(stmts.size() - 1); switch (lastStmt.getNodeType()) { case RETURN_STATEMENT: case THROW_STATEMENT: case BREAK_STATEMENT: case CONTINUE_STATEMENT: return true; case IF_STATEMENT: final IfStatement ifStmt = (IfStatement) lastStmt; final Statement thenStmt = ifStmt.getThenStatement(); final Statement elseStmt = ifStmt.getElseStatement(); return fallsThrough(thenStmt) && fallsThrough(elseStmt); default: return false; } }
for (i = 0; i < statements.size(); i++) { Statement curr= statements.get(i); switch (curr.getNodeType()) { case ASTNode.CONSTRUCTOR_INVOCATION: case ASTNode.SUPER_CONSTRUCTOR_INVOCATION:
for (i = 0; i < statements.size(); i++) { Statement curr= (Statement) statements.get(i); switch (curr.getNodeType()) { case ASTNode.CONSTRUCTOR_INVOCATION: case ASTNode.SUPER_CONSTRUCTOR_INVOCATION:
for (i = 0; i < statements.size(); i++) { Statement curr= statements.get(i); switch (curr.getNodeType()) { case ASTNode.CONSTRUCTOR_INVOCATION: case ASTNode.SUPER_CONSTRUCTOR_INVOCATION:
private boolean isSingleControlStatementWithoutBlock() { List<Statement> statements= fDeclaration.getBody().statements(); int size= statements.size(); if (size != 1) return false; Statement statement= statements.get(size - 1); int nodeType= statement.getNodeType(); if (nodeType == ASTNode.IF_STATEMENT) { IfStatement ifStatement= (IfStatement) statement; return !(ifStatement.getThenStatement() instanceof Block) && !(ifStatement.getElseStatement() instanceof Block); } else if (nodeType == ASTNode.FOR_STATEMENT) { return !(((ForStatement)statement).getBody() instanceof Block); } else if (nodeType == ASTNode.WHILE_STATEMENT) { return !(((WhileStatement)statement).getBody() instanceof Block); } return false; } }
private boolean isSingleControlStatementWithoutBlock() { List<Statement> statements= fDeclaration.getBody().statements(); int size= statements.size(); if (size != 1) return false; Statement statement= statements.get(size - 1); int nodeType= statement.getNodeType(); if (nodeType == ASTNode.IF_STATEMENT) { IfStatement ifStatement= (IfStatement) statement; return !(ifStatement.getThenStatement() instanceof Block) && !(ifStatement.getElseStatement() instanceof Block); } else if (nodeType == ASTNode.FOR_STATEMENT) { return !(((ForStatement)statement).getBody() instanceof Block); } else if (nodeType == ASTNode.WHILE_STATEMENT) { return !(((WhileStatement)statement).getBody() instanceof Block); } return false; } }
private boolean isSingleControlStatementWithoutBlock() { List statements= fDeclaration.getBody().statements(); int size= statements.size(); if (size != 1) return false; Statement statement= (Statement) statements.get(size - 1); int nodeType= statement.getNodeType(); if (nodeType == ASTNode.IF_STATEMENT) { IfStatement ifStatement= (IfStatement) statement; return !(ifStatement.getThenStatement() instanceof Block) && !(ifStatement.getElseStatement() instanceof Block); } else if (nodeType == ASTNode.FOR_STATEMENT) { return !(((ForStatement)statement).getBody() instanceof Block); } else if (nodeType == ASTNode.WHILE_STATEMENT) { return !(((WhileStatement)statement).getBody() instanceof Block); } return false; } }
/** * Return true if the statement falls through. * * @param stmt the statement * @return true if the statement falls through. */ private boolean isEndingWithExit(final Statement stmt) { final List<Statement> stmts = asList(stmt); if (stmts.isEmpty()) { return false; } final Statement lastStmt = stmts.get(stmts.size() - 1); switch (lastStmt.getNodeType()) { case RETURN_STATEMENT: case THROW_STATEMENT: return true; case BREAK_STATEMENT: final BreakStatement breakStmt = (BreakStatement) lastStmt; return breakStmt.getLabel() == null; case IF_STATEMENT: final IfStatement ifStmt = (IfStatement) lastStmt; final Statement thenStmt = ifStmt.getThenStatement(); final Statement elseStmt = ifStmt.getElseStatement(); return isEndingWithExit(thenStmt) && isEndingWithExit(elseStmt); default: return false; } }
@Override public boolean visit(TryStatement node) { final List<Statement> tryStmts = asList(node.getBody()); if (!tryStmts.isEmpty() && tryStmts.get(0).getNodeType() == TRY_STATEMENT) { final TryStatement innerTryStmt = as(tryStmts.get(0), TryStatement.class); if (innerTryStmt != null
switch (statement.getNodeType()) { case ASTNode.IF_STATEMENT: int selectionStart= context.getSelectionOffset(); if (statement.getNodeType() == ASTNode.IF_STATEMENT) { ASTRewrite rewrite= ASTRewrite.create(ast);
private LivenessState buildCFG(List<Statement> stmts, final LivenessState startState, ThrowerBlocks throwers) { LivenessState liveState = startState; for (Statement stmt : stmts) { switch (stmt.getNodeType()) { case ASSERT_STATEMENT: liveState = buildCFG((AssertStatement) stmt, liveState, throwers);