Module rustc_resolve::macros [−][src]
Expand description
A bunch of methods and structures more or less related to resolving macros and
interface provided by Resolver
to macro expander.
Structs
Binding produced by a macro_rules
item.
Not modularized, can shadow previous macro_rules
bindings, etc.
Enums
The scope introduced by a macro_rules!
macro.
This starts at the macro’s definition and ends at the end of the macro’s parent
module (named or unnamed), or even further if it escapes with #[macro_use]
.
Some macro invocations need to introduce macro_rules
scopes too because they
can potentially expand into macro definitions.
Functions
The code common between processing #![register_tool]
and #![register_attr]
.
Type Definitions
macro_rules!
scopes are always kept by reference and inside a cell.
The reason is that we update scopes with value MacroRulesScope::Invocation(invoc_id)
in-place after invoc_id
gets expanded.
This helps to avoid uncontrollable growth of macro_rules!
scope chains,
which usually grow lineraly with the number of macro invocations
in a module (including derives) and hurt performance.