All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.checkerframework.dataflow.analysis.BackwardTransferFunction Maven / Gradle / Ivy

Go to download

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.

There is a newer version: 3.48.2
Show newest version
package org.checkerframework.dataflow.analysis;

import java.util.List;
import org.checkerframework.dataflow.cfg.UnderlyingAST;
import org.checkerframework.dataflow.cfg.node.ReturnNode;
import org.checkerframework.dataflow.qual.SideEffectFree;

/**
 * Interface of a backward transfer function for the abstract interpretation used for the backward
 * flow analysis.
 *
 * 

Important: The individual transfer functions ( {@code visit*}) are allowed to use * (and modify) the stores contained in the argument passed; the ownership is transferred from the * caller to that function. * * @param the abstract value type to be tracked by the analysis * @param the store type used in the analysis */ public interface BackwardTransferFunction, S extends Store> extends TransferFunction { /** * Returns the initial store that should be used at the normal exit block. * * @param underlyingAST the underlying AST of the given control flow graph * @param returnNodes the return nodes of the given control flow graph (an empty list if the * underlying AST is not a method) * @return the initial store that should be used at the normal exit block */ @SideEffectFree S initialNormalExitStore(UnderlyingAST underlyingAST, List returnNodes); /** * Returns the initial store that should be used at the exceptional exit block or given the * underlying AST of a control flow graph. * * @param underlyingAST the underlying AST of the given control flow graph * @return the initial store that should be used at the exceptional exit block */ @SideEffectFree S initialExceptionalExitStore(UnderlyingAST underlyingAST); }