Crate rustc_resolve
source Β·Expand description
This crate is responsible for the part of name resolution that doesnβt require type checker.
Module structure of the crate is built here. Paths in macros, imports, expressions, types, patterns are resolved here. Label and lifetime names are resolved here as well.
Type-relative name resolution (methods, fields, associated items) happens in rustc_hir_analysis
.
Modules§
- build_reduced_graph πAfter we obtain a fresh AST fragment from a macro, code in this module helps to integrate that fragment into the module structures that are already partially built.
- check_unused π
- def_collector π
- diagnostics π
- errors π
- ident π
- imports πA bunch of methods and structures more or less related to resolving imports.
- late πβ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.
- macros πA bunch of methods and structures more or less related to resolving macros and interface provided by
Resolver
to macro expander.
Structs§
- AmbiguityError π
- BindingError π
- BindingKey πA key that identifies a binding in a given
Module
. - DeriveData π
- ExternPreludeEntry π
- Finalize π
- MacroData π
- Module πAll modules are unique and allocated on a same arena, so we can use referential equality to compare them.
- ModuleData πOne node in the tree of modules.
- NameBindingData πRecords a possibly-private value, type, or module definition.
- ParentScope πEverything you need to know about a nameβs location to resolve it. Serves as a starting point for the scope visitor. This struct is currently used only for early resolution (imports and macros), but not for late resolution yet.
- PrivacyError π
- The main resolver class.
- Nothing really interesting here; it just provides memory for the rest of the crate.
- Segment πA minimal representation of a path segment. We use this in resolve because we synthesize βpath segmentsβ which donβt have the rest of an AST or HIR
PathSegment
. - UseError π
Enums§
- AmbiguityErrorMisc πMiscellaneous bits of metadata for better ambiguity error reporting.
- AmbiguityKind π
- BuiltinMacroState πUsed for better errors for E0773
- Determinacy π
- ImplTraitContext π
- LexicalScopeBinding πAn intermediate resolution result.
- ModuleKind π
- ModuleOrUniformRoot π
- NameBindingKind π
- PathResult π
- ResolutionError π
- Scope πA specific scope in which a name can be looked up. This enum is currently used only for early resolution (imports and macros), but not for late resolution yet.
- ScopeSet πNames from different contexts may want to visit different subsets of all specific scopes with different restrictions when looking up the resolution. This enum is currently used only for early resolution (imports and macros), but not for late resolution yet.
- Used πUsed for tracking import use types which will be used for redundant import checking.
- VisResolutionError π
- Weak π
Statics§
- Raw content of Fluent resource for this crate, generated by
fluent_messages
macro, imported byrustc_driver
to include all cratesβ resources in one bundle.
Traits§
- ToNameBinding π
Functions§
- module_to_string πA somewhat inefficient routine to obtain the name of a module.
- names_to_string π
- path_names_to_string π
Type Aliases§
- NameBinding πAll name bindings are unique and allocated on a same arena, so we can use referential equality to compare them.
- Res π
- Resolutions π