use crate::verify::{
contract,
path_extractor::Path,
};
use rustc_hir::def_id::DefId;
use rustc_middle::mir::{BasicBlock, Local};
#[derive(Clone, Debug)]
pub struct ProofGoal<'tcx> {
pub path: Path,
pub items: Vec<RelevantItem<'tcx>>,
}
#[derive(Clone, Debug)]
pub enum RelevantItem<'tcx> {
Statement {
block: BasicBlock,
statement_index: usize,
},
Terminator { block: BasicBlock },
ContractFact { property: contract::Property<'tcx> },
Forget,
CalleeEntry {
callee: DefId,
args: Vec<Local>,
},
CalleeExit {
dest: Local,
},
}