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