“Late resolution” is the pass that resolves most of names in a crate beside imports and macros. It runs when the crate is fully expanded and its module structure is fully built. So it just walks through the crate and resolves all the expressions, types, etc.
If you wonder why there’s no
early.rs, that’s because it’s split into three files -
- Rib 🔒A single local scope.
- Describes whether an
AnonConstis a type level const arg or some other form of anon const (i.e. inline consts or enum discriminants)
- May this constant have generics?
- Does this the item (from the item rib scope) allow generic parameters?
- At this point for most items we can answer whether that item is exported or not, but some items like impls require type information to determine exported-ness, so we make a conservative estimate for them (e.g. based on nominal visibility).
- Reason for why an anon const is not allowed to reference generic parameters
- Denotes whether the context for the set of already bound bindings is a
Orcontext. This is used in e.g.,
resolve_pattern_inner. See those functions for more information.
- RibKind 🔒The rib kind restricts certain accesses, e.g. to a
Res::Localof an outer item.