Trait rustc_typeck::middle::infer::combine::CombineExperimental [-]  [+] [src]

pub trait Combine<'tcx> {
    fn infcx(&'a self) -> &'a InferCtxt<'a, 'tcx>;
    fn tag(&self) -> String;
    fn a_is_expected(&self) -> bool;
    fn trace(&self) -> TypeTrace<'tcx>;
    fn equate(&'a self) -> Equate<'a, 'tcx>;
    fn sub(&'a self) -> Sub<'a, 'tcx>;
    fn lub(&'a self) -> Lub<'a, 'tcx>;
    fn glb(&'a self) -> Glb<'a, 'tcx>;
    fn mts(&self, a: &mt<'tcx>, b: &mt<'tcx>) -> Result<mt<'tcx>, type_err<'tcx>>;
    fn contratys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>;
    fn tys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>;
    fn unsafeties(&self, a: Unsafety, b: Unsafety) -> Result<Unsafety, type_err<'tcx>>;
    fn oncenesses(&self, a: Onceness, b: Onceness) -> Result<Onceness, type_err<'tcx>>;
    fn builtin_bounds(&self, a: EnumSet<BuiltinBound>, b: EnumSet<BuiltinBound>) -> Result<EnumSet<BuiltinBound>, type_err<'tcx>>;
    fn contraregions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>;
    fn regions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>;
    fn binders<T>(&self, a: &Binder<T>, b: &Binder<T>) -> Result<Binder<T>, type_err<'tcx>>;

    fn tcx(&'a self) -> &'a ctxt<'tcx> { ... }
    fn tps(&self, ParamSpace, as_: &[&'tcx TyS<'tcx>], bs: &[&'tcx TyS<'tcx>]) -> Result<Vec<&'tcx TyS<'tcx>>, type_err<'tcx>> { ... }
    fn substs(&self, item_def_id: DefId, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>> { ... }
    fn substs_variances(&self, variances: Option<&ItemVariances>, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>> { ... }
    fn bare_fn_tys(&self, a: &BareFnTy<'tcx>, b: &BareFnTy<'tcx>) -> Result<BareFnTy<'tcx>, type_err<'tcx>> { ... }
    fn closure_tys(&self, a: &ClosureTy<'tcx>, b: &ClosureTy<'tcx>) -> Result<ClosureTy<'tcx>, type_err<'tcx>> { ... }
    fn fn_sigs(&self, a: &FnSig<'tcx>, b: &FnSig<'tcx>) -> Result<FnSig<'tcx>, type_err<'tcx>> { ... }
    fn args(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>> { ... }
    fn abi(&self, a: Abi, b: Abi) -> Result<Abi, type_err<'tcx>> { ... }
    fn projection_tys(&self, a: &ProjectionTy<'tcx>, b: &ProjectionTy<'tcx>) -> Result<ProjectionTy<'tcx>, type_err<'tcx>> { ... }
    fn projection_predicates(&self, a: &ProjectionPredicate<'tcx>, b: &ProjectionPredicate<'tcx>) -> Result<ProjectionPredicate<'tcx>, type_err<'tcx>> { ... }
    fn projection_bounds(&self, a: &Vec<Binder<ProjectionPredicate<'tcx>>>, b: &Vec<Binder<ProjectionPredicate<'tcx>>>) -> Result<Vec<Binder<ProjectionPredicate<'tcx>>>, type_err<'tcx>> { ... }
    fn existential_bounds(&self, a: &ExistentialBounds<'tcx>, b: &ExistentialBounds<'tcx>) -> Result<ExistentialBounds<'tcx>, type_err<'tcx>> { ... }
    fn trait_stores(&self, vk: terr_vstore_kind, a: TraitStore, b: TraitStore) -> Result<TraitStore, type_err<'tcx>> { ... }
    fn trait_refs(&self, a: &TraitRef<'tcx>, b: &TraitRef<'tcx>) -> Result<TraitRef<'tcx>, type_err<'tcx>> { ... }
}

Required Methods

fn infcx(&'a self) -> &'a InferCtxt<'a, 'tcx>

fn tag(&self) -> String

fn a_is_expected(&self) -> bool

fn trace(&self) -> TypeTrace<'tcx>

fn equate(&'a self) -> Equate<'a, 'tcx>

fn sub(&'a self) -> Sub<'a, 'tcx>

fn lub(&'a self) -> Lub<'a, 'tcx>

fn glb(&'a self) -> Glb<'a, 'tcx>

fn mts(&self, a: &mt<'tcx>, b: &mt<'tcx>) -> Result<mt<'tcx>, type_err<'tcx>>

fn contratys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>

fn tys(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>

fn unsafeties(&self, a: Unsafety, b: Unsafety) -> Result<Unsafety, type_err<'tcx>>

fn oncenesses(&self, a: Onceness, b: Onceness) -> Result<Onceness, type_err<'tcx>>

fn builtin_bounds(&self, a: EnumSet<BuiltinBound>, b: EnumSet<BuiltinBound>) -> Result<EnumSet<BuiltinBound>, type_err<'tcx>>

fn contraregions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>

fn regions(&self, a: Region, b: Region) -> Result<Region, type_err<'tcx>>

fn binders<T>(&self, a: &Binder<T>, b: &Binder<T>) -> Result<Binder<T>, type_err<'tcx>>

Provided Methods

fn tcx(&'a self) -> &'a ctxt<'tcx>

fn tps(&self, ParamSpace, as_: &[&'tcx TyS<'tcx>], bs: &[&'tcx TyS<'tcx>]) -> Result<Vec<&'tcx TyS<'tcx>>, type_err<'tcx>>

fn substs(&self, item_def_id: DefId, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>>

fn substs_variances(&self, variances: Option<&ItemVariances>, a_subst: &Substs<'tcx>, b_subst: &Substs<'tcx>) -> Result<Substs<'tcx>, type_err<'tcx>>

fn bare_fn_tys(&self, a: &BareFnTy<'tcx>, b: &BareFnTy<'tcx>) -> Result<BareFnTy<'tcx>, type_err<'tcx>>

fn closure_tys(&self, a: &ClosureTy<'tcx>, b: &ClosureTy<'tcx>) -> Result<ClosureTy<'tcx>, type_err<'tcx>>

fn fn_sigs(&self, a: &FnSig<'tcx>, b: &FnSig<'tcx>) -> Result<FnSig<'tcx>, type_err<'tcx>>

fn args(&self, a: &'tcx TyS<'tcx>, b: &'tcx TyS<'tcx>) -> Result<&'tcx TyS<'tcx>, type_err<'tcx>>

fn abi(&self, a: Abi, b: Abi) -> Result<Abi, type_err<'tcx>>

fn projection_tys(&self, a: &ProjectionTy<'tcx>, b: &ProjectionTy<'tcx>) -> Result<ProjectionTy<'tcx>, type_err<'tcx>>

fn projection_predicates(&self, a: &ProjectionPredicate<'tcx>, b: &ProjectionPredicate<'tcx>) -> Result<ProjectionPredicate<'tcx>, type_err<'tcx>>

fn projection_bounds(&self, a: &Vec<Binder<ProjectionPredicate<'tcx>>>, b: &Vec<Binder<ProjectionPredicate<'tcx>>>) -> Result<Vec<Binder<ProjectionPredicate<'tcx>>>, type_err<'tcx>>

fn existential_bounds(&self, a: &ExistentialBounds<'tcx>, b: &ExistentialBounds<'tcx>) -> Result<ExistentialBounds<'tcx>, type_err<'tcx>>

fn trait_stores(&self, vk: terr_vstore_kind, a: TraitStore, b: TraitStore) -> Result<TraitStore, type_err<'tcx>>

fn trait_refs(&self, a: &TraitRef<'tcx>, b: &TraitRef<'tcx>) -> Result<TraitRef<'tcx>, type_err<'tcx>>

Implementors