Struct rustc_ap_rustc_span::hygiene::ExpnData [−][src]
pub struct ExpnData { pub kind: ExpnKind, pub parent: ExpnId, pub call_site: Span, pub def_site: Span, pub allow_internal_unstable: Option<Lrc<[Symbol]>>, pub allow_internal_unsafe: bool, pub local_inner_macros: bool, pub edition: Edition, pub macro_def_id: Option<DefId>, // some fields omitted }
Expand description
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.
Fields
kind: ExpnKind
The kind of this expansion - macro or compiler desugaring.
parent: ExpnId
The expansion that produced this expansion.
call_site: Span
The location of the actual macro invocation or syntax sugar , e.g.
let x = foo!();
or if let Some(y) = x {}
This may recursively refer to other macro invocations, e.g., if
foo!()
invoked bar!()
internally, and there was an
expression inside bar!
; the call_site of the expression in
the expansion would point to the bar!
invocation; that
call_site span would have its own ExpnData, with the call_site
pointing to the foo!
invocation.
def_site: Span
The span of the macro definition (possibly dummy). This span serves only informational purpose and is not used for resolution.
allow_internal_unstable: Option<Lrc<[Symbol]>>
List of #[unstable]
/feature-gated features that the macro is allowed to use
internally without forcing the whole crate to opt-in
to them.
allow_internal_unsafe: bool
Whether the macro is allowed to use unsafe
internally
even if the user crate has #![forbid(unsafe_code)]
.
local_inner_macros: bool
Enables the macro helper hack (ident!(...)
-> $crate::ident!(...)
)
for a given macro.
edition: Edition
Edition of the crate in which the macro is defined.
macro_def_id: Option<DefId>
The DefId
of the macro being invoked,
if this ExpnData
corresponds to a macro invocation
Implementations
pub fn new(
kind: ExpnKind,
parent: ExpnId,
call_site: Span,
def_site: Span,
allow_internal_unstable: Option<Lrc<[Symbol]>>,
allow_internal_unsafe: bool,
local_inner_macros: bool,
edition: Edition,
macro_def_id: Option<DefId>
) -> ExpnData
Constructs expansion data with default properties.
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for ExpnData
impl UnwindSafe for ExpnData
Blanket Implementations
Mutably borrows from an owned value. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
pub fn vzip(self) -> V