Some helper functions for
Code for type-checking cast expressions.
Code for type-checking closure expressions.
Errors emitted by
Type checking expressions.
A different sort of visitor for walking fn bodies. Unlike the normal visitor, which just walks the entire body in one shot, the
ExprUseVisitordetermines how expressions are being used.
This calculates the types which has storage which lives across a suspension point in a generator from the perspective of typeck. The actual types used at runtime is calculated in
rustc_mir_transform::generatorand may be a subset of the types computed here.
Code related to processing overloaded binary and unary operators.
Inferring borrow kinds for upvars
FnCtxtstores type-checking context needed to type-check bodies of functions, closures, and
consts, including performing type inference with
check_fnis invoked on a generator (i.e., a body that includes yield), it returns back some information about the yield points.
Closures defined within the function. For example:
A temporary returned by
Inherited::build(...). This is necessary for multiple
InferCtxtto share the same
Rcor something similar.
The type of a local binding, including the revealed type for anon types.
Represents a user-provided type in the raw form (never normalized).
Tracks whether executing a node may exit normally (versus return/break/panic, which “diverge”, leaving dead code in their wake). Tracked semi-automatically (through type variables marked as diverging), with some manual adjustments for control-flow primitives (approximating a CFG).
When type-checking an expression, we propagate downward whatever type hint we are able in the form of an
Controls whether the arguments are tupled. This is used for the call operator.
Used only to get
TypeckResultsfor type inference during error recovery. Currently only used for type inference of
consts to avoid type cycle errors.
DefIdis a “primary tables entry”, returns
Some((body_id, body_ty, fn_sig)). Otherwise, returns