@Override public void visitWhileStatement(WhileStatementTree tree) { if (LiteralUtils.isTrue(tree.condition())) { checkLoopWithAlwaysTrueCondition(context, tree); } }
@Override public void visitWhileStatement(WhileStatementTree tree) { if (LiteralUtils.isTrue(tree.condition())) { checkLoopWithAlwaysTrueCondition(context, tree); } }
@Override public void visitWhileStatement(WhileStatementTree tree) { scan(tree.condition()); scan(tree.statement()); }
@Override public void visitWhileStatement(WhileStatementTree tree) { checkModelProviderInLoop(tree, tree.condition(), tree.statement()); super.visitWhileStatement(tree); }
@Override public void visitWhileStatement(WhileStatementTree tree) { scan(tree.condition()); scan(tree.statement()); }
@Override public void visitWhileStatement(WhileStatementTree tree) { scan(tree.condition()); scan(tree.statement()); }
@Override public void visitWhileStatement(WhileStatementTree tree) { scan(tree.condition()); visitStatement(tree.statement()); }
@Override public void visitWhileStatement(WhileStatementTree tree) { scan(tree.condition()); scan(tree.statement()); }
/** * While loops are sometimes used to get only the first element of an enumeration/collection, using code similar to: * <code> * while(myIterator.hasNext()) { * // ... * return myIterator.next(); // unconditional jump * } * </code> */ private static boolean isWhileNextElementLoop(Tree loopTree) { if (loopTree.is(Tree.Kind.WHILE_STATEMENT)) { ExpressionTree condition = ExpressionUtils.skipParentheses(((WhileStatementTree) loopTree).condition()); return condition.is(Tree.Kind.METHOD_INVOCATION) && NEXT_ELEMENT.anyMatch((MethodInvocationTree) condition); } return false; }
/** * While loops are sometimes used to get only the first element of an enumeration/collection, using code similar to: * <code> * while(myIterator.hasNext()) { * // ... * return myIterator.next(); // unconditional jump * } * </code> */ private static boolean isWhileNextElementLoop(Tree loopTree) { if (loopTree.is(Tree.Kind.WHILE_STATEMENT)) { ExpressionTree condition = ExpressionUtils.skipParentheses(((WhileStatementTree) loopTree).condition()); return condition.is(Tree.Kind.METHOD_INVOCATION) && NEXT_ELEMENT.anyMatch((MethodInvocationTree) condition); } return false; }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
private void buildWhileStatement(WhileStatementTree whileStatement) { Block falseBranch = currentBlock; Block loopback = createBlock(); // process body currentBlock = createBlock(loopback); addContinueTarget(loopback); breakTargets.addLast(falseBranch); build(whileStatement.statement()); breakTargets.removeLast(); continueTargets.removeLast(); Block bodyBlock = currentBlock; // process condition currentBlock = createBranch(whileStatement, bodyBlock, falseBranch); buildCondition(whileStatement.condition(), bodyBlock, falseBranch); loopback.addSuccessor(currentBlock); currentBlock = createBlock(currentBlock); }
@Override public void visitWhileStatement(WhileStatementTree tree) { Set<Symbol.VariableSymbol> assignedSymbols = extractor.findAssignedVariables(tree); invalidateAssignedVariables(assignedSymbols); PackedStatementStates nextStates = PackedStatementStates.instantiate(); for (ExecutionState state : currentStates) { PackedStates conditionStates = evaluateCondition(state, tree.condition()); PackedStatementStates loopStates = evaluateStatement(conditionStates.trueStates, tree.statement()); if (!conditionStates.falseStates.isEmpty() || !loopStates.isEmpty()) { state.mergeRelations(Iterables.concat(conditionStates.falseStates, loopStates)); nextStates.addState(state); } } currentStates = nextStates; invalidateAssignedVariables(assignedSymbols); }
@Override public void visitWhileStatement(WhileStatementTree tree) { ConditionalState conditionalState = visitCondition(tree.condition()); Set<VariableSymbol> assignedVariables = new AssignmentVisitor().findAssignedVariables(tree.statement()); currentState = conditionalState.trueState; currentState.invalidateVariables(assignedVariables); scan(tree.statement()); restorePreviousState(); currentState.invalidateVariables(assignedVariables); }
case WHILE_STATEMENT: return isTrue(((WhileStatementTree) loopTree).condition()); case DO_STATEMENT:
case WHILE_STATEMENT: return isTrue(((WhileStatementTree) loopTree).condition()); case DO_STATEMENT:
ExpressionTree whileCondition = ((WhileStatementTree) terminator).condition(); handleBranch(block, cleanupCondition(whileCondition), verifyCondition(whileCondition)); return;
ExpressionTree whileCondition = ((WhileStatementTree) terminator).condition(); handleBranch(block, cleanupCondition(whileCondition), !whileCondition.is(Tree.Kind.BOOLEAN_LITERAL)); return;
ExpressionTree whileCondition = ((WhileStatementTree) terminator).condition(); handleBranch(block, cleanupCondition(whileCondition), verifyCondition(whileCondition)); return;