pub trait RangeAnalysis<'tcx, T: IntervalArithmetic + ConstConvert + Debug>: Analysis {
// Required methods
fn get_fn_range(&self, def_id: DefId) -> Option<RAResult<'tcx, T>>;
fn get_fn_ranges_percall(
&self,
def_id: DefId,
) -> Option<Vec<RAResult<'tcx, T>>>;
fn get_all_fn_ranges(&self) -> RAResultMap<'tcx, T>;
fn get_all_fn_ranges_percall(&self) -> RAVecResultMap<'tcx, T>;
fn get_fn_local_range(
&self,
def_id: DefId,
local: Place<'tcx>,
) -> Option<Range<T>>;
fn get_fn_path_constraints(
&self,
def_id: DefId,
) -> Option<PathConstraint<'tcx>>;
fn get_all_path_constraints(&self) -> PathConstraintMap<'tcx>;
}
Expand description
The core trait for performing range analysis over Rust MIR.
This trait provides access to both intra-procedural and inter-procedural range results inferred through static interval analysis.
Required Methods§
Sourcefn get_fn_range(&self, def_id: DefId) -> Option<RAResult<'tcx, T>>
fn get_fn_range(&self, def_id: DefId) -> Option<RAResult<'tcx, T>>
The fucntion returns the range information for all local variables (Places) in a given
function specified by def_id
.
Sourcefn get_fn_ranges_percall(&self, def_id: DefId) -> Option<Vec<RAResult<'tcx, T>>>
fn get_fn_ranges_percall(&self, def_id: DefId) -> Option<Vec<RAResult<'tcx, T>>>
The function returns the range analysis results for each call instance of the specified function. This is useful in interprocedural or context-sensitive analyses, where a function might be analyzed multiple times under different calling contexts.
Sourcefn get_all_fn_ranges(&self) -> RAResultMap<'tcx, T>
fn get_all_fn_ranges(&self) -> RAResultMap<'tcx, T>
The function returns the complete mapping of range information for all functions in the crate.
Sourcefn get_all_fn_ranges_percall(&self) -> RAVecResultMap<'tcx, T>
fn get_all_fn_ranges_percall(&self) -> RAVecResultMap<'tcx, T>
The function returns the range results for every call instance of every function in the crate.
Sourcefn get_fn_local_range(
&self,
def_id: DefId,
local: Place<'tcx>,
) -> Option<Range<T>>
fn get_fn_local_range( &self, def_id: DefId, local: Place<'tcx>, ) -> Option<Range<T>>
The function returns the inferred range for a specific variable (Place) in a specific function.
Sourcefn get_fn_path_constraints(&self, def_id: DefId) -> Option<PathConstraint<'tcx>>
fn get_fn_path_constraints(&self, def_id: DefId) -> Option<PathConstraint<'tcx>>
The function returns a mapping from feasible control-flow paths to symbolic constraints.
Each constraint is a triple of (Place
, Place
, BinOp
) representing
path-sensitive relational information useful for pruning infeasible paths.
Sourcefn get_all_path_constraints(&self) -> PathConstraintMap<'tcx>
fn get_all_path_constraints(&self) -> PathConstraintMap<'tcx>
The function returns path constraints for all functions in the crate.