pub struct SyntaxExtension {
pub kind: SyntaxExtensionKind,
pub span: Span,
pub allow_internal_unstable: Option<Lrc<[Symbol]>>,
pub stability: Option<Stability>,
pub deprecation: Option<Deprecation>,
pub helper_attrs: Vec<Symbol>,
pub edition: Edition,
pub builtin_name: Option<Symbol>,
pub allow_internal_unsafe: bool,
pub local_inner_macros: bool,
pub collapse_debuginfo: bool,
}
Expand description
A struct representing a macro definition in “lowered” form ready for expansion.
Fields§
§kind: SyntaxExtensionKind
A syntax extension kind.
span: Span
Span of the macro definition.
allow_internal_unstable: Option<Lrc<[Symbol]>>
List of unstable features that are treated as stable inside this macro.
stability: Option<Stability>
The macro’s stability info.
deprecation: Option<Deprecation>
The macro’s deprecation info.
helper_attrs: Vec<Symbol>
Names of helper attributes registered by this macro.
edition: Edition
Edition of the crate in which this macro is defined.
builtin_name: Option<Symbol>
Built-in macros have a couple of special properties like availability
in #[no_implicit_prelude]
modules, so we have to keep this flag.
allow_internal_unsafe: bool
Suppresses the unsafe_code
lint for code produced by this macro.
local_inner_macros: bool
Enables the macro helper hack (ident!(...)
-> $crate::ident!(...)
) for this macro.
collapse_debuginfo: bool
Should debuginfo for the macro be collapsed to the outermost expansion site (in other
words, was the macro definition annotated with #[collapse_debuginfo]
)?
Implementations§
Source§impl SyntaxExtension
impl SyntaxExtension
Sourcepub fn macro_kind(&self) -> MacroKind
pub fn macro_kind(&self) -> MacroKind
Returns which kind of macro calls this syntax extension.
Sourcepub fn default(kind: SyntaxExtensionKind, edition: Edition) -> SyntaxExtension
pub fn default(kind: SyntaxExtensionKind, edition: Edition) -> SyntaxExtension
Constructs a syntax extension with default properties.
fn collapse_debuginfo_by_name( attr: &impl AttributeExt, ) -> Result<CollapseMacroDebuginfo, Span>
Sourcefn get_collapse_debuginfo(
sess: &Session,
attrs: &[impl AttributeExt],
ext: bool,
) -> bool
fn get_collapse_debuginfo( sess: &Session, attrs: &[impl AttributeExt], ext: bool, ) -> bool
if-ext - if macro from different crate (related to callsite code) | cmd \ attr | no | (unspecified) | external | yes | | no | no | no | no | no | | (unspecified) | no | if-ext | if-ext | yes | | external | no | if-ext | if-ext | yes | | yes | yes | yes | yes | yes |
Sourcepub fn new(
sess: &Session,
features: &Features,
kind: SyntaxExtensionKind,
span: Span,
helper_attrs: Vec<Symbol>,
edition: Edition,
name: Symbol,
attrs: &[impl AttributeExt],
is_local: bool,
) -> SyntaxExtension
pub fn new( sess: &Session, features: &Features, kind: SyntaxExtensionKind, span: Span, helper_attrs: Vec<Symbol>, edition: Edition, name: Symbol, attrs: &[impl AttributeExt], is_local: bool, ) -> SyntaxExtension
Constructs a syntax extension with the given properties and other properties converted from attributes.
Sourcepub fn dummy_bang(edition: Edition) -> SyntaxExtension
pub fn dummy_bang(edition: Edition) -> SyntaxExtension
A dummy bang macro foo!()
.
Sourcepub fn dummy_derive(edition: Edition) -> SyntaxExtension
pub fn dummy_derive(edition: Edition) -> SyntaxExtension
A dummy derive macro #[derive(Foo)]
.
pub fn non_macro_attr(edition: Edition) -> SyntaxExtension
pub fn glob_delegation( trait_def_id: DefId, impl_def_id: LocalDefId, edition: Edition, ) -> SyntaxExtension
pub fn expn_data( &self, parent: LocalExpnId, call_site: Span, descr: Symbol, macro_def_id: Option<DefId>, parent_module: Option<DefId>, ) -> ExpnData
Auto Trait Implementations§
impl DynSend for SyntaxExtension
impl DynSync for SyntaxExtension
impl Freeze for SyntaxExtension
impl !RefUnwindSafe for SyntaxExtension
impl !Send for SyntaxExtension
impl !Sync for SyntaxExtension
impl Unpin for SyntaxExtension
impl !UnwindSafe for SyntaxExtension
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 120 bytes