public void visitAssertStatement(AssertStatement statement) { statement.getBooleanExpression().visit(this); statement.getMessageExpression().visit(this); }
public void visitWhileLoop(WhileStatement loop) { loop.getBooleanExpression().visit(this); loop.getLoopBlock().visit(this); }
public void visitDoWhileLoop(DoWhileStatement loop) { loop.getLoopBlock().visit(this); loop.getBooleanExpression().visit(this); }
@Override public void visitWhileLoop(WhileStatement stat) { stat.getBooleanExpression().visit(this); stat.setLoopBlock(replace(stat.getLoopBlock())); }
@Override public void visitDoWhileLoop(DoWhileStatement stat) { stat.getBooleanExpression().visit(this); stat.setLoopBlock(replace(stat.getLoopBlock())); }
public void visitWhileLoop(final WhileStatement loop) { assertStatementAuthorized(loop); loop.getBooleanExpression().visit(this); loop.getLoopBlock().visit(this); }
public void visitAssertStatement(final AssertStatement statement) { assertStatementAuthorized(statement); statement.getBooleanExpression().visit(this); statement.getMessageExpression().visit(this); }
public void visitDoWhileLoop(final DoWhileStatement loop) { assertStatementAuthorized(loop); loop.getBooleanExpression().visit(this); loop.getLoopBlock().visit(this); }
@Override public void visitIfElse(final IfStatement ifElse) { visitStatement(ifElse); ifElse.getBooleanExpression().visit(this); Map<Variable, VariableState> ifState = pushState(); ifElse.getIfBlock().visit(this); popState(); Statement elseBlock = ifElse.getElseBlock(); Map<Variable, VariableState> elseState = pushState(); visitPossiblyEmptyStatement(elseBlock); popState(); // merge if/else branches Map<Variable, VariableState> curState = getState(); Set<Variable> allVars = new HashSet<Variable>(); allVars.addAll(curState.keySet()); allVars.addAll(ifState.keySet()); allVars.addAll(elseState.keySet()); for (Variable var : allVars) { VariableState beforeValue = curState.get(var); VariableState ifValue = ifState.get(var); VariableState elseValue = elseState.get(var); // merge if and else values VariableState mergedIfElse; mergedIfElse = isFinal(ifValue) && isFinal(elseValue) ? VariableState.is_final : VariableState.is_var; if (beforeValue != null) { curState.put(var, mergedIfElse); } } }
public void visitTernaryExpression(TernaryExpression expression) { expression.getBooleanExpression().visit(this); expression.getTrueExpression().visit(this); expression.getFalseExpression().visit(this); }
public void visitIfElse(IfStatement ifElse) { ifElse.getBooleanExpression().visit(this); ifElse.getIfBlock().visit(this); Statement elseBlock = ifElse.getElseBlock(); if (elseBlock instanceof EmptyStatement) { // dispatching to EmptyStatement will not call back visitor, // must call our visitEmptyStatement explicitly visitEmptyStatement((EmptyStatement) elseBlock); } else { elseBlock.visit(this); } }
public void visitTernaryExpression(final TernaryExpression expression) { assertExpressionAuthorized(expression); expression.getBooleanExpression().visit(this); expression.getTrueExpression().visit(this); expression.getFalseExpression().visit(this); }
@Override public void visitIfElse(IfStatement stat) { stat.getBooleanExpression().visit(this); stat.setIfBlock(replace(stat.getIfBlock())); stat.setElseBlock(replace(stat.getElseBlock())); }
public void visitIfElse(final IfStatement ifElse) { assertStatementAuthorized(ifElse); ifElse.getBooleanExpression().visit(this); ifElse.getIfBlock().visit(this); Statement elseBlock = ifElse.getElseBlock(); if (elseBlock instanceof EmptyStatement) { // dispatching to EmptyStatement will not call back visitor, // must call our visitEmptyStatement explicitly visitEmptyStatement((EmptyStatement) elseBlock); } else { elseBlock.visit(this); } }
public void visitIfElse(IfStatement ifElse) { ifElse.getBooleanExpression().visit(this); pushState(); ifElse.getIfBlock().visit(this); popState(); pushState(); ifElse.getElseBlock().visit(this); popState(); }
ifElse.getBooleanExpression().visit(this); ifElse.getIfBlock().visit(this);
public void writeDoWhileLoop(DoWhileStatement loop) { controller.getAcg().onLineNumber(loop,"visitDoWhileLoop"); writeStatementLabel(loop); MethodVisitor mv = controller.getMethodVisitor(); controller.getCompileStack().pushLoop(loop.getStatementLabels()); Label breakLabel = controller.getCompileStack().getBreakLabel(); Label continueLabel = controller.getCompileStack().getContinueLabel(); mv.visitLabel(continueLabel); loop.getLoopBlock().visit(controller.getAcg()); loop.getBooleanExpression().visit(controller.getAcg()); controller.getOperandStack().jump(IFEQ, continueLabel); mv.visitLabel(breakLabel); controller.getCompileStack().pop(); }
public void writeIfElse(IfStatement ifElse) { controller.getAcg().onLineNumber(ifElse,"visitIfElse"); writeStatementLabel(ifElse); MethodVisitor mv = controller.getMethodVisitor(); ifElse.getBooleanExpression().visit(controller.getAcg()); Label l0 = controller.getOperandStack().jump(IFEQ); // if-else is here handled as a special version // of a boolean expression controller.getCompileStack().pushBooleanExpression(); ifElse.getIfBlock().visit(controller.getAcg()); controller.getCompileStack().pop(); if (ifElse.getElseBlock()==EmptyStatement.INSTANCE) { mv.visitLabel(l0); } else { Label l1 = new Label(); mv.visitJumpInsn(GOTO, l1); mv.visitLabel(l0); controller.getCompileStack().pushBooleanExpression(); ifElse.getElseBlock().visit(controller.getAcg()); controller.getCompileStack().pop(); mv.visitLabel(l1); } }
public void writeWhileLoop(WhileStatement loop) { controller.getAcg().onLineNumber(loop,"visitWhileLoop"); writeStatementLabel(loop); MethodVisitor mv = controller.getMethodVisitor(); controller.getCompileStack().pushLoop(loop.getStatementLabels()); Label continueLabel = controller.getCompileStack().getContinueLabel(); Label breakLabel = controller.getCompileStack().getBreakLabel(); mv.visitLabel(continueLabel); BooleanExpression bool = loop.getBooleanExpression(); boolean boolHandled = false; if (bool.getExpression() instanceof ConstantExpression) { ConstantExpression constant = (ConstantExpression) bool.getExpression(); if (constant.getValue()==Boolean.TRUE) { boolHandled = true; // do nothing } else if (constant.getValue()==Boolean.FALSE) { boolHandled = true; mv.visitJumpInsn(GOTO, breakLabel); } } if(!boolHandled) { bool.visit(controller.getAcg()); controller.getOperandStack().jump(IFEQ, breakLabel); } loop.getLoopBlock().visit(controller.getAcg()); mv.visitJumpInsn(GOTO, continueLabel); mv.visitLabel(breakLabel); controller.getCompileStack().pop(); }
expression.getBooleanExpression().visit(this); Expression trueExpression = expression.getTrueExpression(); Expression falseExpression = expression.getFalseExpression();