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 🔒
- effective_
visibilities 🔒 - 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. - rustdoc
Structs§
- Ambiguity
Error 🔒 - Binding
Error 🔒 - Binding
Key 🔒 - A key that identifies a binding in a given
Module
. - Derive
Data 🔒 - Extern
Prelude 🔒Entry - Finalize 🔒
- Invocation
Parent 🔒 - Macro
Data 🔒 - Module 🔒
- All modules are unique and allocated on a same arena, so we can use referential equality to compare them.
- Module
Data 🔒 - One node in the tree of modules.
- Name
Binding 🔒Data - Records a possibly-private value, type, or module definition.
- Parent
Scope 🔒 - 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.
- Privacy
Error 🔒 - Resolver
- The main resolver class.
- Resolver
Arenas - This provides memory for the rest of the crate. The
'ra
lifetime that is used by many types in this crate is an abbreviation ofResolverArenas
. - 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§
- Ambiguity
Error 🔒Misc - Miscellaneous bits of metadata for better ambiguity error reporting.
- Ambiguity
Kind 🔒 - Builtin
Macro 🔒State - Used for better errors for E0773
- Determinacy 🔒
- Impl
Trait 🔒Context - Lexical
Scope 🔒Binding - An intermediate resolution result.
- Module
Kind 🔒 - Module
OrUniform 🔒Root - Name
Binding 🔒Kind - Path
Result 🔒 - Resolution
Error 🔒 - 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.
- Scope
Set 🔒 - 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.
- VisResolution
Error 🔒 - Weak 🔒
Statics§
- DEFAULT_
LOCALE_ RESOURCE - 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§
Functions§
- module_
to_ 🔒string - A somewhat inefficient routine to obtain the name of a module.
- names_
to_ 🔒string - path_
names_ 🔒to_ string - provide
Type Aliases§
- Name
Binding 🔒 - All name bindings are unique and allocated on a same arena, so we can use referential equality to compare them.
- Res 🔒
- Resolutions 🔒