Struct rustc::middle::typeck::infer::InferCtxt[src]
pub struct InferCtxt<'a> {
pub tcx: &'a ctxt,
// some fields omitted
}Fields
tcx |
Methods
impl<'a> InferCtxt<'a>
fn combine_fields<'a>(&'a self, a_is_expected: bool, trace: TypeTrace) -> CombineFields<'a>
fn sub<'a>(&'a self, a_is_expected: bool, trace: TypeTrace) -> Sub<'a>
fn lub<'a>(&'a self, a_is_expected: bool, trace: TypeTrace) -> Lub<'a>
fn in_snapshot(&self) -> bool
fn commit_unconditionally<R>(&self, f: || -> R) -> R
Execute f and commit the bindings
fn commit_if_ok<T, E>(&self, f: || -> Result<T, E>) -> Result<T, E>
Execute f and commit the bindings if successful
fn try<T, E>(&self, f: || -> Result<T, E>) -> Result<T, E>
Execute f, unroll bindings on failure
fn probe<T, E>(&self, f: || -> Result<T, E>) -> Result<T, E>
Execute f then unroll any bindings it creates
impl<'a> InferCtxt<'a>
fn next_ty_var_id(&self) -> TyVid
fn next_ty_var(&self) -> t
fn next_ty_vars(&self, n: uint) -> Vec<t>
fn next_int_var_id(&self) -> IntVid
fn next_float_var_id(&self) -> FloatVid
fn next_region_var(&self, origin: RegionVariableOrigin) -> Region
fn region_vars_for_defs(&self, span: Span, defs: &Vec<RegionParameterDef>) -> Vec<Region>
fn fresh_substs_for_type(&self, span: Span, generics: &Generics) -> Substs
Given a set of generics defined on a type or impl, returns a substitution mapping each type/region parameter to a fresh inference variable.
fn fresh_bound_region(&self, binder_id: NodeId) -> Region
fn resolve_regions_and_report_errors(&self)
fn ty_to_str(&self, t: t) -> String
fn tys_to_str(&self, ts: &[t]) -> String
fn trait_ref_to_str(&self, t: &TraitRef) -> String
fn resolve_type_vars_if_possible(&self, typ: t) -> t
fn resolve_type_vars_in_trait_ref_if_possible(&self, trait_ref: &TraitRef) -> TraitRef
fn type_error_message_str(&self, sp: Span, mk_msg: |Option<String>, String| -> String, actual_ty: String, err: Option<&type_err>)
fn type_error_message_str_with_expected(&self, sp: Span, mk_msg: |Option<String>, String| -> String, expected_ty: Option<t>, actual_ty: String, err: Option<&type_err>)
fn type_error_message(&self, sp: Span, mk_msg: |String| -> String, actual_ty: t, err: Option<&type_err>)
fn report_mismatched_types(&self, sp: Span, e: t, a: t, err: &type_err)
fn replace_late_bound_regions_with_fresh_regions(&self, trace: TypeTrace, fsig: &FnSig) -> (FnSig, HashMap<BoundRegion, Region>)
Trait Implementations
impl<'a> RegionScope for InferCtxt<'a>
impl<'tcx, V: SimplyUnifiable, K: UnifyKey<Option<V>>> InferCtxtMethodsForSimplyUnifiableTypes<V, K> for InferCtxt<'tcx>
fn simple_vars(&self, a_is_expected: bool, a_id: K, b_id: K) -> ures
Unifies two simple keys. Because simple keys do not have any subtyping relationships, if both keys have already been associated with a value, then those two values must be the same.
fn simple_var_t(&self, a_is_expected: bool, a_id: K, b: V) -> ures
Sets the value of the key a_id to b. Because
simple keys do not have any subtyping relationships,
if a_id already has a value, it must be the same as
b.
impl<'a> ErrorReporting for InferCtxt<'a>
fn report_region_errors(&self, errors: &Vec<RegionResolutionError>)
fn process_errors(&self, errors: &Vec<RegionResolutionError>) -> Vec<RegionResolutionError>
fn report_type_error(&self, trace: TypeTrace, terr: &type_err)
fn report_and_explain_type_error(&self, trace: TypeTrace, terr: &type_err)
fn values_str(&self, values: &ValuePairs) -> Option<String>
Returns a string of the form "expected {} but found {}",
or None if this is a derived error.