Module rustc_borrowck::type_check
source · Expand description
This pass type-checks the MIR to ensure it is not broken.
Modules
This module contains code to equate the input/output types appearing
in the MIR with the expected input/output types from the function
signature. This requires a bit of processing, as the expected types
are supplied to us before normalization and may contain opaque
impl Trait
instances. In contrast, the input/output types found in
the MIR (specifically, in the special local variables for the
RETURN_PLACE
the MIR arguments) are always fully normalized (and
contain revealed impl Trait
values).liveness 🔒
Macros
Structs
Runs
infcx.instantiate_opaque_types
. Unlike other TypeOp
s,
this is not canonicalized - it directly affects the main InferCtxt
that we use during MIR borrowchecking.A collection of region constraints that must be satisfied for the
program to be considered well-typed.
The MIR type checker. Visits the MIR and enforces all the
constraints needed for it to be valid and well-typed. Along the
way, it accrues region constraints – these can later be used by
NLL region checking.
Verifies that MIR types are sane to not crash further checks.
Enums
The
Locations
type summarizes where region constraints are
required to hold. Normally, this is at a particular point which
created the obligation, but for constraints that the user gave, we
want the constraint to hold at all points.Traits
Functions
mirbug 🔒
Type checks the given
mir
in the context of the inference
context infcx
. Returns any region constraints that have yet to
be proven. This result includes liveness constraints that
ensure that regions appearing in the types of all local variables
are live at all points where that local variable may later be
used.