Struct rustc_resolve::Resolver
[−]
[src]
pub struct Resolver<'a> { pub definitions: Definitions, pub freevars: FreevarMap, pub export_map: ExportMap, pub trait_map: TraitMap, pub make_glob_map: bool, pub glob_map: GlobMap, pub maybe_unused_trait_imports: NodeSet, pub whitelisted_legacy_custom_derives: Vec<Name>, pub found_unresolved_macro: bool, // some fields omitted }
🔬 This is a nightly-only experimental API. (
rustc_private
)The main resolver class.
Fields
definitions: Definitions
🔬 This is a nightly-only experimental API. (
rustc_private
)freevars: FreevarMap
🔬 This is a nightly-only experimental API. (
rustc_private
)export_map: ExportMap
🔬 This is a nightly-only experimental API. (
rustc_private
)trait_map: TraitMap
🔬 This is a nightly-only experimental API. (
rustc_private
)make_glob_map: bool
🔬 This is a nightly-only experimental API. (
rustc_private
)glob_map: GlobMap
🔬 This is a nightly-only experimental API. (
rustc_private
)maybe_unused_trait_imports: NodeSet
🔬 This is a nightly-only experimental API. (
rustc_private
)whitelisted_legacy_custom_derives: Vec<Name>
🔬 This is a nightly-only experimental API. (
rustc_private
)found_unresolved_macro: bool
🔬 This is a nightly-only experimental API. (
rustc_private
)Methods
impl<'a> Resolver<'a>
[src]
fn resolve_lexical_macro_path_segment(&mut self,
ident: Ident,
ns: Namespace,
record_used: Option<Span>)
-> Result<&'a NameBinding<'a>, Determinacy>
ident: Ident,
ns: Namespace,
record_used: Option<Span>)
-> Result<&'a NameBinding<'a>, Determinacy>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn resolve_legacy_scope(&mut self,
scope: &'a Cell<LegacyScope<'a>>,
name: Name,
record_used: bool)
-> Option<MacroBinding<'a>>
scope: &'a Cell<LegacyScope<'a>>,
name: Name,
record_used: bool)
-> Option<MacroBinding<'a>>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn finalize_current_module_macro_resolutions(&mut self)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn define_macro(&mut self, item: &Item, legacy_scope: &mut LegacyScope<'a>)
🔬 This is a nightly-only experimental API. (
rustc_private
)impl<'a> Resolver<'a>
[src]
fn macro_def_scope(&mut self, expansion: Mark) -> Module<'a>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn get_macro(&mut self, def: Def) -> Rc<SyntaxExtension>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn populate_module_if_necessary(&mut self, module: Module<'a>)
🔬 This is a nightly-only experimental API. (
rustc_private
)Ensures that the reduced graph rooted at the given external module is built, building it if it is not.
impl<'a> Resolver<'a>
[src]
fn resolve_ident_in_module(&mut self,
module: Module<'a>,
ident: Ident,
ns: Namespace,
ignore_unresolved_invocations: bool,
record_used: Option<Span>)
-> Result<&'a NameBinding<'a>, Determinacy>
module: Module<'a>,
ident: Ident,
ns: Namespace,
ignore_unresolved_invocations: bool,
record_used: Option<Span>)
-> Result<&'a NameBinding<'a>, Determinacy>
🔬 This is a nightly-only experimental API. (
rustc_private
)Attempts to resolve ident
in namespaces ns
of module
.
Invariant: if record_used
is Some
, import resolution must be complete.
fn add_import_directive(&mut self,
module_path: Vec<Ident>,
subclass: ImportDirectiveSubclass<'a>,
span: Span,
id: NodeId,
vis: Visibility,
expansion: Mark)
module_path: Vec<Ident>,
subclass: ImportDirectiveSubclass<'a>,
span: Span,
id: NodeId,
vis: Visibility,
expansion: Mark)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn import(&self,
binding: &'a NameBinding<'a>,
directive: &'a ImportDirective<'a>)
-> &'a NameBinding<'a>
binding: &'a NameBinding<'a>,
directive: &'a ImportDirective<'a>)
-> &'a NameBinding<'a>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn try_define(&mut self,
module: Module<'a>,
ident: Ident,
ns: Namespace,
binding: &'a NameBinding<'a>)
-> Result<(), &'a NameBinding<'a>>
module: Module<'a>,
ident: Ident,
ns: Namespace,
binding: &'a NameBinding<'a>)
-> Result<(), &'a NameBinding<'a>>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn ambiguity(&self,
b1: &'a NameBinding<'a>,
b2: &'a NameBinding<'a>)
-> &'a NameBinding<'a>
b1: &'a NameBinding<'a>,
b2: &'a NameBinding<'a>)
-> &'a NameBinding<'a>
🔬 This is a nightly-only experimental API. (
rustc_private
)impl<'a> Resolver<'a>
[src]
fn new(session: &'a Session,
krate: &Crate,
make_glob_map: MakeGlobMap,
crate_loader: &'a mut CrateLoader,
arenas: &'a ResolverArenas<'a>)
-> Resolver<'a>
krate: &Crate,
make_glob_map: MakeGlobMap,
crate_loader: &'a mut CrateLoader,
arenas: &'a ResolverArenas<'a>)
-> Resolver<'a>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn arenas() -> ResolverArenas<'a>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn resolve_crate(&mut self, krate: &Crate)
🔬 This is a nightly-only experimental API. (
rustc_private
)Entry point to crate resolution.
fn with_module_lexical_scope<T, F>(&mut self, module: Module<'a>, f: F) -> T where F: FnOnce(&mut Resolver<'a>) -> T
🔬 This is a nightly-only experimental API. (
rustc_private
)Trait Implementations
impl<'a> Resolver for Resolver<'a>
[src]
fn next_node_id(&mut self) -> NodeId
🔬 This is a nightly-only experimental API. (
rustc_private
)fn get_module_scope(&mut self, id: NodeId) -> Mark
🔬 This is a nightly-only experimental API. (
rustc_private
)fn eliminate_crate_var(&mut self, item: P<Item>) -> P<Item>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn is_whitelisted_legacy_custom_derive(&self, name: Name) -> bool
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_expansion(&mut self,
mark: Mark,
expansion: &Expansion,
derives: &[Mark])
mark: Mark,
expansion: &Expansion,
derives: &[Mark])
🔬 This is a nightly-only experimental API. (
rustc_private
)fn add_builtin(&mut self, ident: Ident, ext: Rc<SyntaxExtension>)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn resolve_imports(&mut self)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn find_legacy_attr_invoc(&mut self,
attrs: &mut Vec<Attribute>)
-> Option<Attribute>
attrs: &mut Vec<Attribute>)
-> Option<Attribute>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn resolve_invoc(&mut self,
invoc: &mut Invocation,
scope: Mark,
force: bool)
-> Result<Option<Rc<SyntaxExtension>>, Determinacy>
invoc: &mut Invocation,
scope: Mark,
force: bool)
-> Result<Option<Rc<SyntaxExtension>>, Determinacy>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn resolve_macro(&mut self,
scope: Mark,
path: &Path,
kind: MacroKind,
force: bool)
-> Result<Rc<SyntaxExtension>, Determinacy>
scope: Mark,
path: &Path,
kind: MacroKind,
force: bool)
-> Result<Rc<SyntaxExtension>, Determinacy>
🔬 This is a nightly-only experimental API. (
rustc_private
)impl<'a, 'tcx> Visitor<'tcx> for Resolver<'a>
[src]
fn visit_item(&mut self, item: &'tcx Item)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_arm(&mut self, arm: &'tcx Arm)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_block(&mut self, block: &'tcx Block)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_expr(&mut self, expr: &'tcx Expr)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_local(&mut self, local: &'tcx Local)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_ty(&mut self, ty: &'tcx Ty)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_poly_trait_ref(&mut self,
tref: &'tcx PolyTraitRef,
m: &'tcx TraitBoundModifier)
tref: &'tcx PolyTraitRef,
m: &'tcx TraitBoundModifier)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_variant(&mut self,
variant: &'tcx Variant,
generics: &'tcx Generics,
item_id: NodeId)
variant: &'tcx Variant,
generics: &'tcx Generics,
item_id: NodeId)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_foreign_item(&mut self, foreign_item: &'tcx ForeignItem)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_fn(&mut self,
function_kind: FnKind<'tcx>,
declaration: &'tcx FnDecl,
_: Span,
node_id: NodeId)
function_kind: FnKind<'tcx>,
declaration: &'tcx FnDecl,
_: Span,
node_id: NodeId)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_generics(&mut self, generics: &'tcx Generics)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_name(&mut self, _span: Span, _name: Symbol)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_ident(&mut self, span: Span, ident: Ident)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_mod(&mut self, m: &'ast Mod, _s: Span, _n: NodeId)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_stmt(&mut self, s: &'ast Stmt)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_pat(&mut self, p: &'ast Pat)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_expr_post(&mut self, _ex: &'ast Expr)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_where_predicate(&mut self, p: &'ast WherePredicate)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_trait_item(&mut self, ti: &'ast TraitItem)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_impl_item(&mut self, ii: &'ast ImplItem)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_trait_ref(&mut self, t: &'ast TraitRef)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_ty_param_bound(&mut self, bounds: &'ast TyParamBound)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_variant_data(&mut self,
s: &'ast VariantData,
Ident,
&'ast Generics,
NodeId,
Span)
s: &'ast VariantData,
Ident,
&'ast Generics,
NodeId,
Span)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_struct_field(&mut self, s: &'ast StructField)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_enum_def(&mut self,
enum_definition: &'ast EnumDef,
generics: &'ast Generics,
item_id: NodeId,
Span)
enum_definition: &'ast EnumDef,
generics: &'ast Generics,
item_id: NodeId,
Span)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_lifetime(&mut self, lifetime: &'ast Lifetime)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_lifetime_def(&mut self, lifetime: &'ast LifetimeDef)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_mac(&mut self, _mac: &'ast Spanned<Mac_>)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_path(&mut self, path: &'ast Path, _id: NodeId)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_path_list_item(&mut self,
prefix: &'ast Path,
item: &'ast Spanned<PathListItem_>)
prefix: &'ast Path,
item: &'ast Spanned<PathListItem_>)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_path_segment(&mut self,
path_span: Span,
path_segment: &'ast PathSegment)
path_span: Span,
path_segment: &'ast PathSegment)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_path_parameters(&mut self,
path_span: Span,
path_parameters: &'ast PathParameters)
path_span: Span,
path_parameters: &'ast PathParameters)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_assoc_type_binding(&mut self, type_binding: &'ast TypeBinding)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_attribute(&mut self, _attr: &'ast Attribute)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_vis(&mut self, vis: &'ast Visibility)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn visit_fn_ret_ty(&mut self, ret_ty: &'ast FunctionRetTy)
🔬 This is a nightly-only experimental API. (
rustc_private
)impl<'a, 'b: 'a> DefIdTree for &'a Resolver<'b>
[src]
fn parent(self, id: DefId) -> Option<DefId>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn is_descendant_of(self, descendant: DefId, ancestor: DefId) -> bool
🔬 This is a nightly-only experimental API. (
rustc_private
)impl<'a> Resolver for Resolver<'a>
[src]
fn resolve_hir_path(&mut self, path: &mut Path, is_value: bool)
🔬 This is a nightly-only experimental API. (
rustc_private
)fn get_resolution(&mut self, id: NodeId) -> Option<PathResolution>
🔬 This is a nightly-only experimental API. (
rustc_private
)fn definitions(&mut self) -> &mut Definitions
🔬 This is a nightly-only experimental API. (
rustc_private
)