Module rustc_span::hygiene
source · Expand description
Machinery for hygienic macros.
Inspired by Matthew Flatt et al., “Macros That Work Together: Compile-Time Bindings, Partial Expansion, and Definition Contexts,” Journal of Functional Programming 22, no. 2 (March 1, 2012): 181–216, https://doi.org/10.1017/S0956796812000093.
Structs
- A subset of properties from both macro definition and macro call available through global data. Avoid using this if you have access to the original definition or call structures.
- A unique hash value associated to an expansion.
- A unique ID associated with a macro invocation and expansion.
- A unique ID associated with a macro invocation and expansion.
- Additional information used to assist in decoding hygiene data
- Additional information used to assist in decoding hygiene data
- A unique ID associated with a macro invocation and expansion.
- A
SyntaxContext
represents a chain of pairs(ExpnId, Transparency)
named “marks”.
Enums
- The kind of AST transform.
- The kind of compiler desugaring.
- Expansion kind.
- The kind of macro invocation or definition.
- A property of a macro expansion that determines how identifiers produced by that expansion are resolved.
Functions
- Assert that the provided
HashStableContext
is configured with the ‘default’HashingControls
. We should always have bailed out before getting to here with a non-default mode. With this check in place, we can avoid the need to maintain separate versions ofExpnData
hashes for each permutation ofHashingControls
settings. - Decode an expansion from the metadata of a foreign crate.
- Register an expansion which has been decoded from the metadata of a foreign crate.
- Register an expansion which has been decoded from the on-disk-cache for the local crate.
- Updates the
disambiguator
field of the correspondingExpnData
such that theFingerprint
of theExpnData
does not collide with any otherExpnIds
.