[][src]Struct rustc_span::hygiene::ExpnData

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>,
    pub krate: CrateNum,
    pub orig_id: Option<u32>,

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.


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

krate: CrateNum

The crate that originally created this ExpnData. During metadata serialization, we only encode ExpnDatas that were created locally - when our serialized metadata is decoded, foreign ExpnIds will have their ExpnData looked up from the crate specified by `Crate

orig_id: Option<u32>

The raw that this ExpnData had in its original crate. An ExpnData can be created before being assigned an ExpnId, so this might be None until set_expn_data is called


impl ExpnData[src]

pub fn default(
    kind: ExpnKind,
    call_site: Span,
    edition: Edition,
    macro_def_id: Option<DefId>
) -> ExpnData

Constructs expansion data with default properties.

pub fn allow_unstable(
    kind: ExpnKind,
    call_site: Span,
    edition: Edition,
    allow_internal_unstable: Lrc<[Symbol]>,
    macro_def_id: Option<DefId>
) -> ExpnData

pub fn is_root(&self) -> bool[src]

Trait Implementations

impl Clone for ExpnData[src]

impl Debug for ExpnData[src]

impl<__D: Decoder> Decodable<__D> for ExpnData[src]

impl<__E: Encoder> Encodable<__E> for ExpnData[src]

impl<__CTX> HashStable<__CTX> for ExpnData where
    __CTX: HashStableContext

impl !PartialEq<ExpnData> for ExpnData[src]

Auto Trait Implementations

impl !RefUnwindSafe for ExpnData

impl !Send for ExpnData

impl !Sync for ExpnData

impl Unpin for ExpnData

impl UnwindSafe for ExpnData

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized

impl<T> Borrow<T> for T where
    T: ?Sized

impl<T> BorrowMut<T> for T where
    T: ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 

impl<T> ToOwned for T where
    T: Clone

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.