pub trait Analyzer<'a> {
    type Info: Clone;

    // Required methods
    fn merge_match(
        &mut self,
        statement_location: StatementLocation,
        match_info: &'a MatchInfo,
        infos: &[Self::Info]
    ) -> Self::Info;
    fn info_from_return(
        &mut self,
        statement_location: StatementLocation,
        vars: &[VariableId]
    ) -> Self::Info;
    fn info_from_panic(
        &mut self,
        statement_location: StatementLocation,
        var: &VariableId
    ) -> Self::Info;

    // Provided methods
    fn visit_block_start(
        &mut self,
        info: &mut Self::Info,
        block_id: BlockId,
        block: &FlatBlock
    ) { ... }
    fn visit_stmt(
        &mut self,
        info: &mut Self::Info,
        statement_location: StatementLocation,
        stmt: &Statement
    ) { ... }
    fn visit_goto(
        &mut self,
        info: &mut Self::Info,
        statement_location: StatementLocation,
        target_block_id: BlockId,
        remapping: &VarRemapping
    ) { ... }
}
Expand description

Analyzer trait to implement for each specific analysis.

Required Associated Types§

Required Methods§

source

fn merge_match( &mut self, statement_location: StatementLocation, match_info: &'a MatchInfo, infos: &[Self::Info] ) -> Self::Info

source

fn info_from_return( &mut self, statement_location: StatementLocation, vars: &[VariableId] ) -> Self::Info

source

fn info_from_panic( &mut self, statement_location: StatementLocation, var: &VariableId ) -> Self::Info

Provided Methods§

source

fn visit_block_start( &mut self, info: &mut Self::Info, block_id: BlockId, block: &FlatBlock )

source

fn visit_stmt( &mut self, info: &mut Self::Info, statement_location: StatementLocation, stmt: &Statement )

source

fn visit_goto( &mut self, info: &mut Self::Info, statement_location: StatementLocation, target_block_id: BlockId, remapping: &VarRemapping )

Implementors§