Struct rustc_expand::expand::InvocationCollector[−][src]

struct InvocationCollector<'a, 'b> {
    cx: &'a mut ExtCtxt<'b>,
    cfg: StripUnconfigured<'a>,
    invocations: Vec<(Invocation, Option<Lrc<SyntaxExtension>>)>,
    monotonic: bool,
}

Fields

cx: &'a mut ExtCtxt<'b>cfg: StripUnconfigured<'a>invocations: Vec<(Invocation, Option<Lrc<SyntaxExtension>>)>monotonic: bool

Implementations

impl<'a, 'b> InvocationCollector<'a, 'b>[src]

fn collect(
    &mut self,
    fragment_kind: AstFragmentKind,
    kind: InvocationKind
) -> AstFragment
[src]

fn collect_bang(
    &mut self,
    mac: MacCall,
    span: Span,
    kind: AstFragmentKind
) -> AstFragment
[src]

fn collect_attr(
    &mut self,
    (attr, pos, derives): (Attribute, usize, Vec<Path>),
    item: Annotatable,
    kind: AstFragmentKind
) -> AstFragment
[src]

fn take_first_attr(
    &mut self,
    item: &mut impl AstLike
) -> Option<(Attribute, usize, Vec<Path>)>
[src]

If item is an attribute invocation, remove the attribute and return it together with its position and derives following it. We have to collect the derives in order to resolve legacy derive helpers (helpers written before derives that introduce them).

fn configure<T: AstLike>(&mut self, node: T) -> Option<T>[src]

fn check_attributes(&mut self, attrs: &[Attribute])[src]

Trait Implementations

impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b>[src]

fn visit_expr(&mut self, expr: &mut P<Expr>)[src]

fn flat_map_arm(&mut self, arm: Arm) -> SmallVec<[Arm; 1]>[src]

fn flat_map_expr_field(&mut self, field: ExprField) -> SmallVec<[ExprField; 1]>[src]

fn flat_map_pat_field(&mut self, fp: PatField) -> SmallVec<[PatField; 1]>[src]

fn flat_map_param(&mut self, p: Param) -> SmallVec<[Param; 1]>[src]

fn flat_map_field_def(&mut self, sf: FieldDef) -> SmallVec<[FieldDef; 1]>[src]

fn flat_map_variant(&mut self, variant: Variant) -> SmallVec<[Variant; 1]>[src]

fn filter_map_expr(&mut self, expr: P<Expr>) -> Option<P<Expr>>[src]

fn visit_pat(&mut self, pat: &mut P<Pat>)[src]

fn flat_map_stmt(&mut self, stmt: Stmt) -> SmallVec<[Stmt; 1]>[src]

fn visit_block(&mut self, block: &mut P<Block>)[src]

fn flat_map_item(&mut self, item: P<Item>) -> SmallVec<[P<Item>; 1]>[src]

fn flat_map_trait_item(
    &mut self,
    item: P<AssocItem>
) -> SmallVec<[P<AssocItem>; 1]>
[src]

fn flat_map_impl_item(
    &mut self,
    item: P<AssocItem>
) -> SmallVec<[P<AssocItem>; 1]>
[src]

fn visit_ty(&mut self, ty: &mut P<Ty>)[src]

fn flat_map_foreign_item(
    &mut self,
    foreign_item: P<ForeignItem>
) -> SmallVec<[P<ForeignItem>; 1]>
[src]

fn flat_map_generic_param(
    &mut self,
    param: GenericParam
) -> SmallVec<[GenericParam; 1]>
[src]

fn visit_attribute(&mut self, at: &mut Attribute)[src]

fn visit_id(&mut self, id: &mut NodeId)[src]

fn token_visiting_enabled(&self) -> bool[src]

Mutable token visiting only exists for the macro_rules token marker and should not be used otherwise. Token visitor would be entirely separate from the regular visitor if the marker didn’t have to visit AST fragments in nonterminal tokens. Read more

fn visit_crate(&mut self, c: &mut Crate)[src]

fn visit_meta_list_item(&mut self, list_item: &mut NestedMetaItem)[src]

fn visit_meta_item(&mut self, meta_item: &mut MetaItem)[src]

fn visit_use_tree(&mut self, use_tree: &mut UseTree)[src]

fn visit_fn_header(&mut self, header: &mut FnHeader)[src]

fn visit_item_kind(&mut self, i: &mut ItemKind)[src]

fn visit_fn_decl(&mut self, d: &mut P<FnDecl>)[src]

fn visit_asyncness(&mut self, a: &mut Async)[src]

fn visit_anon_const(&mut self, c: &mut AnonConst)[src]

fn visit_generic_arg(&mut self, arg: &mut GenericArg)[src]

fn visit_lifetime(&mut self, l: &mut Lifetime)[src]

fn visit_ty_constraint(&mut self, t: &mut AssocTyConstraint)[src]

fn visit_foreign_mod(&mut self, nm: &mut ForeignMod)[src]

fn visit_ident(&mut self, i: &mut Ident)[src]

fn visit_path(&mut self, p: &mut Path)[src]

fn visit_qself(&mut self, qs: &mut Option<QSelf>)[src]

fn visit_generic_args(&mut self, p: &mut GenericArgs)[src]

fn visit_angle_bracketed_parameter_data(&mut self, p: &mut AngleBracketedArgs)[src]

fn visit_parenthesized_parameter_data(&mut self, p: &mut ParenthesizedArgs)[src]

fn visit_local(&mut self, l: &mut P<Local>)[src]

fn visit_mac_call(&mut self, mac: &mut MacCall)[src]

fn visit_macro_def(&mut self, def: &mut MacroDef)[src]

fn visit_label(&mut self, label: &mut Label)[src]

fn visit_generics(&mut self, generics: &mut Generics)[src]

fn visit_trait_ref(&mut self, tr: &mut TraitRef)[src]

fn visit_poly_trait_ref(&mut self, p: &mut PolyTraitRef)[src]

fn visit_variant_data(&mut self, vdata: &mut VariantData)[src]

fn visit_param_bound(&mut self, tpb: &mut GenericBound)[src]

fn visit_mt(&mut self, mt: &mut MutTy)[src]

fn visit_where_clause(&mut self, where_clause: &mut WhereClause)[src]

fn visit_where_predicate(&mut self, where_predicate: &mut WherePredicate)[src]

fn visit_vis(&mut self, vis: &mut Visibility)[src]

fn visit_span(&mut self, _sp: &mut Span)[src]

Auto Trait Implementations

impl<'a, 'b> !RefUnwindSafe for InvocationCollector<'a, 'b>

impl<'a, 'b> !Send for InvocationCollector<'a, 'b>

impl<'a, 'b> !Sync for InvocationCollector<'a, 'b>

impl<'a, 'b> Unpin for InvocationCollector<'a, 'b> where
    'b: 'a, 

impl<'a, 'b> !UnwindSafe for InvocationCollector<'a, 'b>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized, 
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized, 
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized, 
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.