Expand description
During type inference, partially inferred terms are
represented using inference variables (ty::Infer). These donβt appear in
the final ty::TypeckResults since all of the types should have been
inferred once typeck is done.
When type inference is running however, having to update the typeck results
every time a new type is inferred would be unreasonably slow, so instead all
of the replacement happens at the end in FnCtxt::resolve_type_vars_in_body,
which creates a new TypeckResults which doesnβt contain any inference variables.
Re-exportsΒ§
use std::mem;πuse std::ops::ControlFlow;πuse rustc_attr_ir::find_attr;πuse rustc_data_structures::fx::FxHashSet;πuse rustc_data_structures::fx::FxIndexMap;πuse rustc_data_structures::unord::ExtendUnord;πuse rustc_errors::E0720;πuse rustc_errors::ErrorGuaranteed;πuse rustc_hir::def_id::LocalDefId;πuse rustc_hir::intravisit;πuse rustc_hir::intravisit::InferKind;πuse rustc_hir::intravisit::Visitor;πuse rustc_hir as hir;πuse rustc_hir::AmbigArg;πuse rustc_hir::HirId;πuse rustc_infer::traits::solve::Goal;πuse rustc_middle::traits::ObligationCause;πuse rustc_middle::ty::adjustment::Adjust;πuse rustc_middle::ty::adjustment::Adjustment;πuse rustc_middle::ty::adjustment::PointerCoercion;πuse rustc_middle::ty;πuse rustc_middle::ty::DefiningScopeKind;πuse rustc_middle::ty::DefinitionSiteHiddenType;πuse rustc_middle::ty::Flags;πuse rustc_middle::ty::PredicateProxy;πuse rustc_middle::ty::Ty;πuse rustc_middle::ty::TyCtxt;πuse rustc_middle::ty::TypeFoldable;πuse rustc_middle::ty::TypeFolder;πuse rustc_middle::ty::TypeSuperFoldable;πuse rustc_middle::ty::TypeSuperVisitable;πuse rustc_middle::ty::TypeVisitable;πuse rustc_middle::ty::TypeVisitableExt;πuse rustc_middle::ty::TypeVisitor;πuse rustc_middle::ty::Unnormalized;πuse rustc_middle::ty::fold_regions;πuse rustc_span::Span;πuse rustc_trait_selection::error_reporting::infer::need_type_info::TypeAnnotationNeeded;πuse rustc_trait_selection::opaque_types::opaque_type_has_defining_use_args;πuse rustc_trait_selection::solve;πuse tracing::debug;πuse tracing::instrument;πuse tracing::instrument;πuse crate::FnCtxt;π
StructsΒ§
- Eagerly
Normalize πConsts - HasRecursive
Opaque π - Resolver π
- Writeback
Cx π - The Writeback context. This visitor walks the HIR, checking the
fn-specific typeck results to find inference variables. It resolves
those inference variables and writes the final result into the
TypeckResults. It also applies a few ad-hoc checks that were not convenient to do elsewhere.
TraitsΒ§
- Locatable π