Trait rustc_expand::base::ResolverExpand

source ·
pub trait ResolverExpand {
Show 19 methods // Required methods fn next_node_id(&mut self) -> NodeId; fn invocation_parent(&self, id: LocalExpnId) -> LocalDefId; fn resolve_dollar_crates(&mut self); fn visit_ast_fragment_with_placeholders( &mut self, expn_id: LocalExpnId, fragment: &AstFragment ); fn register_builtin_macro(&mut self, name: Symbol, ext: SyntaxExtensionKind); fn expansion_for_ast_pass( &mut self, call_site: Span, pass: AstPass, features: &[Symbol], parent_module_id: Option<NodeId> ) -> LocalExpnId; fn resolve_imports(&mut self); fn resolve_macro_invocation( &mut self, invoc: &Invocation, eager_expansion_root: LocalExpnId, force: bool ) -> Result<Lrc<SyntaxExtension>, Indeterminate>; fn record_macro_rule_usage(&mut self, mac_id: NodeId, rule_index: usize); fn check_unused_macros(&mut self); fn has_derive_copy(&self, expn_id: LocalExpnId) -> bool; fn resolve_derives( &mut self, expn_id: LocalExpnId, force: bool, derive_paths: &dyn Fn() -> DeriveResolutions ) -> Result<(), Indeterminate>; fn take_derive_resolutions( &mut self, expn_id: LocalExpnId ) -> Option<DeriveResolutions>; fn cfg_accessible( &mut self, expn_id: LocalExpnId, path: &Path ) -> Result<bool, Indeterminate>; fn macro_accessible( &mut self, expn_id: LocalExpnId, path: &Path ) -> Result<bool, Indeterminate>; fn get_proc_macro_quoted_span(&self, krate: CrateNum, id: usize) -> Span; fn declare_proc_macro(&mut self, id: NodeId); fn append_stripped_cfg_item( &mut self, parent_node: NodeId, name: Ident, cfg: MetaItem ); fn registered_tools(&self) -> &RegisteredTools;
}

Required Methods§

source

fn next_node_id(&mut self) -> NodeId

source

fn invocation_parent(&self, id: LocalExpnId) -> LocalDefId

source

fn resolve_dollar_crates(&mut self)

source

fn visit_ast_fragment_with_placeholders( &mut self, expn_id: LocalExpnId, fragment: &AstFragment )

source

fn register_builtin_macro(&mut self, name: Symbol, ext: SyntaxExtensionKind)

source

fn expansion_for_ast_pass( &mut self, call_site: Span, pass: AstPass, features: &[Symbol], parent_module_id: Option<NodeId> ) -> LocalExpnId

source

fn resolve_imports(&mut self)

source

fn resolve_macro_invocation( &mut self, invoc: &Invocation, eager_expansion_root: LocalExpnId, force: bool ) -> Result<Lrc<SyntaxExtension>, Indeterminate>

source

fn record_macro_rule_usage(&mut self, mac_id: NodeId, rule_index: usize)

source

fn check_unused_macros(&mut self)

source

fn has_derive_copy(&self, expn_id: LocalExpnId) -> bool

Does #[derive(...)] attribute with the given ExpnId have built-in Copy inside it?

source

fn resolve_derives( &mut self, expn_id: LocalExpnId, force: bool, derive_paths: &dyn Fn() -> DeriveResolutions ) -> Result<(), Indeterminate>

Resolve paths inside the #[derive(...)] attribute with the given ExpnId.

source

fn take_derive_resolutions( &mut self, expn_id: LocalExpnId ) -> Option<DeriveResolutions>

Take resolutions for paths inside the #[derive(...)] attribute with the given ExpnId back from resolver.

source

fn cfg_accessible( &mut self, expn_id: LocalExpnId, path: &Path ) -> Result<bool, Indeterminate>

Path resolution logic for #[cfg_accessible(path)].

source

fn macro_accessible( &mut self, expn_id: LocalExpnId, path: &Path ) -> Result<bool, Indeterminate>

source

fn get_proc_macro_quoted_span(&self, krate: CrateNum, id: usize) -> Span

Decodes the proc-macro quoted span in the specified crate, with the specified id. No caching is performed.

source

fn declare_proc_macro(&mut self, id: NodeId)

The order of items in the HIR is unrelated to the order of items in the AST. However, we generate proc macro harnesses based on the AST order, and later refer to these harnesses from the HIR. This field keeps track of the order in which we generated proc macros harnesses, so that we can map HIR proc macros items back to their harness items.

source

fn append_stripped_cfg_item( &mut self, parent_node: NodeId, name: Ident, cfg: MetaItem )

source

fn registered_tools(&self) -> &RegisteredTools

Tools registered with #![register_tool] and used by tool attributes and lints.

Implementors§