package org.checkerframework.dataflow.cfg.block; /*>>> import org.checkerframework.checker.nullness.qual.Nullable; */ import org.checkerframework.dataflow.analysis.Store; /** * Implementation of a non-special basic block. * * @author Stefan Heule * */ public abstract class SingleSuccessorBlockImpl extends BlockImpl implements SingleSuccessorBlock { /** Internal representation of the successor. */ protected /*@Nullable*/ BlockImpl successor; /** * The rule below say that EACH store at the end of a single * successor block flow to the corresponding store of the successor. */ protected Store.FlowRule flowRule = Store.FlowRule.EACH_TO_EACH; @Override public /*@Nullable*/ Block getSuccessor() { return successor; } /** * Set a basic block as the successor of this block. */ public void setSuccessor(BlockImpl successor) { this.successor = successor; successor.addPredecessor(this); } @Override public Store.FlowRule getFlowRule() { return flowRule; } @Override public void setFlowRule(Store.FlowRule rule) { flowRule = rule; } }