Expand description
Resolution of early vs late bound lifetimes.
Name resolution for lifetimes is performed on the AST and embedded into HIR. From this information, typechecking needs to transform the lifetime parameters into bound lifetimes. Lifetimes can be early-bound or late-bound. Construction of typechecking terms needs to visit the types in HIR to identify late-bound lifetimes and assign their Debruijn indices. This file is also responsible for assigning their semantics to implicit lifetimes in trait objects.
StructsΒ§
- Bound
VarContext π - Named
VarMap π - Maps the id of each bound variable reference to the variable decl that it corresponds to.
- Truncated
Scope πDebug
EnumsΒ§
- Binder
Scope πType - NonLifetime
Binder πAllowed - Scope π
TraitsΒ§
- Region
Ext π
FunctionsΒ§
- deny_
non_ πregion_ late_ bound - generic_
param_ πdef_ as_ bound_ arg - Turn a
ty::GenericParamDefinto a bound arg. Generally, this should only be used when turning early-bound vars into late-bound vars when lowering return type notation. - is_
late_ πbound_ map - Detects late-bound lifetimes and inserts them into
late_bound. - late_
arg_ πas_ bound_ arg - object_
lifetime_ πdefault - opaque_
captures_ πall_ in_ scope_ lifetimes - Whether this opaque always captures lifetimes in scope.
Right now, this is all RPITIT and TAITs, and when
lifetime_capture_rules_2024is enabled. We donβt check the span of the edition, since this is done on a per-opaque basis to account for nested opaques. - provide π
- resolve_
bound_ πvars - Computes the
ResolveBoundVarsmap that contains data for an entireItem. You should not read the result of this query directly, but rather usenamed_variable_map,is_late_bound_map, etc.
Type AliasesΒ§
- Scope
Ref π