Struct rustc_expand::config::StripUnconfigured
source · pub struct StripUnconfigured<'a> {
pub sess: &'a Session,
pub features: Option<&'a Features>,
pub config_tokens: bool,
pub lint_node_id: NodeId,
}Expand description
A folder that strips out items that do not belong in the current configuration.
Fields§
§sess: &'a Session§features: Option<&'a Features>§config_tokens: boolIf true, perform cfg-stripping on attached tokens.
This is only used for the input to derive macros,
which needs eager expansion of cfg and cfg_attr
lint_node_id: NodeIdImplementations§
source§impl<'a> StripUnconfigured<'a>
impl<'a> StripUnconfigured<'a>
pub fn configure<T: HasAttrs + HasTokens>(&self, node: T) -> Option<T>
fn try_configure_tokens<T: HasTokens>(&self, node: &mut T)
sourcefn configure_tokens(&self, stream: &AttrTokenStream) -> AttrTokenStream
fn configure_tokens(&self, stream: &AttrTokenStream) -> AttrTokenStream
Performs cfg-expansion on stream, producing a new AttrTokenStream.
This is only used during the invocation of derive proc-macros,
which require that we cfg-expand their entire input.
Normal cfg-expansion operates on parsed AST nodes via the configure method
sourcefn process_cfg_attrs<T: HasAttrs>(&self, node: &mut T)
fn process_cfg_attrs<T: HasAttrs>(&self, node: &mut T)
Parse and expand all cfg_attr attributes into a list of attributes
that are within each cfg_attr that has a true configuration predicate.
Gives compiler warnings if any cfg_attr does not contain any
attributes and is in the original source code. Gives compiler errors if
the syntax of any cfg_attr is incorrect.
fn process_cfg_attr(&self, attr: &Attribute) -> Vec<Attribute>
sourcepub(crate) fn expand_cfg_attr(
&self,
attr: &Attribute,
recursive: bool
) -> Vec<Attribute>
pub(crate) fn expand_cfg_attr( &self, attr: &Attribute, recursive: bool ) -> Vec<Attribute>
Parse and expand a single cfg_attr attribute into a list of attributes
when the configuration predicate is true, or otherwise expand into an
empty list of attributes.
Gives a compiler warning when the cfg_attr contains no attributes and
is in the original source file. Gives a compiler error if the syntax of
the attribute is incorrect.
fn expand_cfg_attr_item( &self, attr: &Attribute, (item, item_span): (AttrItem, Span) ) -> Attribute
sourcefn in_cfg(&self, attrs: &[Attribute]) -> bool
fn in_cfg(&self, attrs: &[Attribute]) -> bool
Determines if a node with the given attributes should be included in this configuration.
pub(crate) fn cfg_true(&self, attr: &Attribute) -> (bool, Option<MetaItem>)
sourcepub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute)
pub(crate) fn maybe_emit_expr_attr_err(&self, attr: &Attribute)
If attributes are not allowed on expressions, emit an error for attr
pub fn configure_expr(&self, expr: &mut P<Expr>, method_receiver: bool)
Auto Trait Implementations§
impl<'a> DynSend for StripUnconfigured<'a>
impl<'a> DynSync for StripUnconfigured<'a>
impl<'a> Freeze for StripUnconfigured<'a>
impl<'a> !RefUnwindSafe for StripUnconfigured<'a>
impl<'a> !Send for StripUnconfigured<'a>
impl<'a> !Sync for StripUnconfigured<'a>
impl<'a> Unpin for StripUnconfigured<'a>
impl<'a> !UnwindSafe for StripUnconfigured<'a>
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
§impl<T> Filterable for T
impl<T> Filterable for T
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>
§impl<T> Pointable for T
impl<T> Pointable for 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: 24 bytes