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: &'a [VarUsage],
    ) -> 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: &'a Statement,
    ) { ... }
    fn visit_goto(
        &mut self,
        info: &mut Self::Info,
        statement_location: StatementLocation,
        target_block_id: BlockId,
        remapping: &VarRemapping,
    ) { ... }
    fn info_from_panic(
        &mut self,
        statement_location: StatementLocation,
        var: &VarUsage,
    ) -> Self::Info { ... }
}
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: &'a [VarUsage], ) -> 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: &'a Statement, )

source

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

source

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

Default info_from_panic implementation for post ‘lower_panics’ phases. Earlier phases need to override this implementation.

Implementors§