pub trait Typecheckable: Sized {
    type Expr: BorrowMut<OwnedExpr<Symbol>>;

    // Required method
    fn typecheck_expected<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'life6, 'async_trait>(
        self,
        compiler: &'life0 mut ModuleCompiler<'life1, 'life2>,
        thread: &'life3 Thread,
        file: &'life4 str,
        expr_str: &'life5 str,
        expected_type: Option<&'life6 ArcType>
    ) -> Pin<Box<dyn Future<Output = SalvageResult<TypecheckValue<Self::Expr>>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             'life5: 'async_trait,
             'life6: 'async_trait;

    // Provided method
    fn typecheck<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>(
        self,
        compiler: &'life0 mut ModuleCompiler<'life1, 'life2>,
        thread: &'life3 Thread,
        file: &'life4 str,
        expr_str: &'life5 str
    ) -> Pin<Box<dyn Future<Output = SalvageResult<TypecheckValue<Self::Expr>>> + Send + 'async_trait>>
       where Self: Send + 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait,
             'life4: 'async_trait,
             'life5: 'async_trait { ... }
}

Required Associated Types§

Required Methods§

source

fn typecheck_expected<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'life6, 'async_trait>( self, compiler: &'life0 mut ModuleCompiler<'life1, 'life2>, thread: &'life3 Thread, file: &'life4 str, expr_str: &'life5 str, expected_type: Option<&'life6 ArcType> ) -> Pin<Box<dyn Future<Output = SalvageResult<TypecheckValue<Self::Expr>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait, 'life6: 'async_trait,

Provided Methods§

source

fn typecheck<'life0, 'life1, 'life2, 'life3, 'life4, 'life5, 'async_trait>( self, compiler: &'life0 mut ModuleCompiler<'life1, 'life2>, thread: &'life3 Thread, file: &'life4 str, expr_str: &'life5 str ) -> Pin<Box<dyn Future<Output = SalvageResult<TypecheckValue<Self::Expr>>> + Send + 'async_trait>>
where Self: Send + 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait, 'life5: 'async_trait,

Object Safety§

This trait is not object safe.

Implementors§