diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-13 18:03:38 +0100 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-15 18:00:01 +0100 |
| commit | 2fd15442f2f1c798718242eaa9817531a53c2134 (patch) | |
| tree | 5fefb30a58a7ad8ba4acbc124e360fc6ec4bbd3c /src/libsyntax | |
| parent | dbef35309d10bed2f09cd55b3e9ea980a58c62aa (diff) | |
ast: move Generics into AssocItemKinds
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/mut_visit.rs | 9 | ||||
| -rw-r--r-- | src/libsyntax/visit.rs | 7 |
3 files changed, 11 insertions, 10 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 72430fa9c17..7f6e405fec6 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1616,7 +1616,6 @@ pub struct AssocItem { pub ident: Ident, pub defaultness: Defaultness, - pub generics: Generics, pub kind: AssocItemKind, /// See `Item::tokens` for what this is. pub tokens: Option<TokenStream>, @@ -1636,10 +1635,10 @@ pub enum AssocItemKind { Const(P<Ty>, Option<P<Expr>>), /// An associated function. - Fn(FnSig, Option<P<Block>>), + Fn(FnSig, Generics, Option<P<Block>>), /// An associated type. - TyAlias(GenericBounds, Option<P<Ty>>), + TyAlias(Generics, GenericBounds, Option<P<Ty>>), /// A macro expanding to an associated item. Macro(Mac), diff --git a/src/libsyntax/mut_visit.rs b/src/libsyntax/mut_visit.rs index e0180d45193..f3857b3a414 100644 --- a/src/libsyntax/mut_visit.rs +++ b/src/libsyntax/mut_visit.rs @@ -951,23 +951,24 @@ pub fn noop_flat_map_assoc_item<T: MutVisitor>( mut item: P<AssocItem>, visitor: &mut T, ) -> SmallVec<[P<AssocItem>; 1]> { - let AssocItem { id, ident, vis, defaultness: _, attrs, generics, kind, span, tokens: _ } = + let AssocItem { id, ident, vis, defaultness: _, attrs, kind, span, tokens: _ } = item.deref_mut(); visitor.visit_id(id); visitor.visit_ident(ident); visitor.visit_vis(vis); visit_attrs(attrs, visitor); - visitor.visit_generics(generics); match kind { AssocItemKind::Const(ty, expr) => { visitor.visit_ty(ty); visit_opt(expr, |expr| visitor.visit_expr(expr)); } - AssocItemKind::Fn(sig, body) => { + AssocItemKind::Fn(sig, generics, body) => { + visitor.visit_generics(generics); visit_fn_sig(sig, visitor); visit_opt(body, |body| visitor.visit_block(body)); } - AssocItemKind::TyAlias(bounds, ty) => { + AssocItemKind::TyAlias(generics, bounds, ty) => { + visitor.visit_generics(generics); visit_bounds(bounds, visitor); visit_opt(ty, |ty| visitor.visit_ty(ty)); } diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 73e731397c3..edcfd7f4e78 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -625,17 +625,18 @@ pub fn walk_assoc_item<'a, V: Visitor<'a>>(visitor: &mut V, item: &'a AssocItem, visitor.visit_vis(&item.vis); visitor.visit_ident(item.ident); walk_list!(visitor, visit_attribute, &item.attrs); - visitor.visit_generics(&item.generics); match item.kind { AssocItemKind::Const(ref ty, ref expr) => { visitor.visit_ty(ty); walk_list!(visitor, visit_expr, expr); } - AssocItemKind::Fn(ref sig, ref body) => { + AssocItemKind::Fn(ref sig, ref generics, ref body) => { + visitor.visit_generics(generics); let kind = FnKind::Fn(FnCtxt::Assoc(ctxt), item.ident, sig, &item.vis, body.as_deref()); visitor.visit_fn(kind, item.span, item.id); } - AssocItemKind::TyAlias(ref bounds, ref ty) => { + AssocItemKind::TyAlias(ref generics, ref bounds, ref ty) => { + visitor.visit_generics(generics); walk_list!(visitor, visit_param_bound, bounds); walk_list!(visitor, visit_ty, ty); } |
