package dk.brics.jscontrolflow.statements; import java.util.Collection; import java.util.Collections; /** * Assert that ToBoolean(v<sub>arg</sub>) = <i>B</i>, where * <i>B</i> is a known boolean. * <p/> * This type of statement is inserted to preserve information from * conditions in if-statements and other control structures. */ public class Assertion extends NonAssignment { private int argVar; private boolean value; public Assertion(int argVar, boolean value) { this.argVar = argVar; this.value = value; } public int getArgVar() { return argVar; } public void setArgVar(int argVar) { this.argVar = argVar; } public boolean getValue() { return value; } public void setValue(boolean value) { this.value = value; } @Override public void apply(StatementVisitor v) { v.caseAssertion(this); } @Override public <Q, A> A apply(StatementQuestionAnswer<Q, A> v, Q arg) { return v.caseAssertion(this, arg); } @Override public Collection<Integer> getReadVariables() { return Collections.singleton(argVar); } @Override public boolean canThrowException() { return false; } }