org.checkerframework.dataflow.cfg.block.ConditionalBlock Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of checker Show documentation
Show all versions of checker Show documentation
The Checker Framework enhances Java's type system to
make it more powerful and useful. This lets software developers
detect and prevent errors in their Java programs.
The Checker Framework includes compiler plug-ins ("checkers")
that find bugs or verify their absence. It also permits you to
write your own compiler plug-ins.
package org.checkerframework.dataflow.cfg.block;
import org.checkerframework.dataflow.analysis.Store.FlowRule;
// Werner believes that a ConditionalBlock has to have exactly one RegularBlock (?) predecessor and
// the last node of that predecessor has to be a node of boolean type. He's not totally sure,
// though. We should check whether that property holds.
/** Represents a conditional basic block. */
public interface ConditionalBlock extends Block {
/**
* Returns the entry block of the then branch.
*
* @return the entry block of the then branch
*/
Block getThenSuccessor();
/**
* Returns the entry block of the else branch.
*
* @return the entry block of the else branch
*/
Block getElseSuccessor();
/**
* Returns the flow rule for information flowing from this block to its then successor.
*
* @return the flow rule for information flowing from this block to its then successor
*/
FlowRule getThenFlowRule();
/**
* Returns the flow rule for information flowing from this block to its else successor.
*
* @return the flow rule for information flowing from this block to its else successor
*/
FlowRule getElseFlowRule();
/**
* Set the flow rule for information flowing from this block to its then successor.
*
* @param rule the new flow rule for information flowing from this block to its then successor
*/
void setThenFlowRule(FlowRule rule);
/**
* Set the flow rule for information flowing from this block to its else successor.
*
* @param rule the new flow rule for information flowing from this block to its else successor
*/
void setElseFlowRule(FlowRule rule);
}