Inline away MutType
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index cf93016..043a61e 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -258,8 +258,6 @@
# [ cfg ( feature = "full" ) ]
fn fold_method_turbofish(&mut self, i: MethodTurbofish) -> MethodTurbofish { fold_method_turbofish(self, i) }
-fn fold_mut_type(&mut self, i: MutType) -> MutType { fold_mut_type(self, i) }
-
fn fold_nested_meta_item(&mut self, i: NestedMetaItem) -> NestedMetaItem { fold_nested_meta_item(self, i) }
fn fold_parenthesized_generic_arguments(&mut self, i: ParenthesizedGenericArguments) -> ParenthesizedGenericArguments { fold_parenthesized_generic_arguments(self, i) }
@@ -1991,13 +1989,6 @@
}
}
-pub fn fold_mut_type<V: Folder + ?Sized>(_visitor: &mut V, _i: MutType) -> MutType {
- MutType {
- mutability: (_i . mutability).map(|it| { Token ! [ mut ](tokens_helper(_visitor, &(it).0)) }),
- ty: _visitor.fold_type(_i . ty),
- }
-}
-
pub fn fold_nested_meta_item<V: Folder + ?Sized>(_visitor: &mut V, _i: NestedMetaItem) -> NestedMetaItem {
use ::NestedMetaItem::*;
match _i {
@@ -2542,7 +2533,8 @@
TypePtr {
star_token: Token ! [ * ](tokens_helper(_visitor, &(_i . star_token).0)),
const_token: (_i . const_token).map(|it| { Token ! [ const ](tokens_helper(_visitor, &(it).0)) }),
- elem: Box::new(_visitor.fold_mut_type(* _i . elem)),
+ mutability: (_i . mutability).map(|it| { Token ! [ mut ](tokens_helper(_visitor, &(it).0)) }),
+ elem: Box::new(_visitor.fold_type(* _i . elem)),
}
}
@@ -2550,7 +2542,8 @@
TypeReference {
and_token: Token ! [ & ](tokens_helper(_visitor, &(_i . and_token).0)),
lifetime: (_i . lifetime).map(|it| { _visitor.fold_lifetime(it) }),
- elem: Box::new(_visitor.fold_mut_type(* _i . elem)),
+ mutability: (_i . mutability).map(|it| { Token ! [ mut ](tokens_helper(_visitor, &(it).0)) }),
+ elem: Box::new(_visitor.fold_type(* _i . elem)),
}
}
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 4991eb2..1f140ff 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -254,8 +254,6 @@
# [ cfg ( feature = "full" ) ]
fn visit_method_turbofish(&mut self, i: &'ast MethodTurbofish) { visit_method_turbofish(self, i) }
-fn visit_mut_type(&mut self, i: &'ast MutType) { visit_mut_type(self, i) }
-
fn visit_nested_meta_item(&mut self, i: &'ast NestedMetaItem) { visit_nested_meta_item(self, i) }
fn visit_parenthesized_generic_arguments(&mut self, i: &'ast ParenthesizedGenericArguments) { visit_parenthesized_generic_arguments(self, i) }
@@ -1573,11 +1571,6 @@
tokens_helper(_visitor, &(& _i . gt_token).0);
}
-pub fn visit_mut_type<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast MutType) {
- if let Some(ref it) = _i . mutability { tokens_helper(_visitor, &(it).0) };
- _visitor.visit_type(& _i . ty);
-}
-
pub fn visit_nested_meta_item<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast NestedMetaItem) {
use ::NestedMetaItem::*;
match *_i {
@@ -1972,13 +1965,15 @@
pub fn visit_type_ptr<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypePtr) {
tokens_helper(_visitor, &(& _i . star_token).0);
if let Some(ref it) = _i . const_token { tokens_helper(_visitor, &(it).0) };
- _visitor.visit_mut_type(& * _i . elem);
+ if let Some(ref it) = _i . mutability { tokens_helper(_visitor, &(it).0) };
+ _visitor.visit_type(& * _i . elem);
}
pub fn visit_type_reference<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeReference) {
tokens_helper(_visitor, &(& _i . and_token).0);
if let Some(ref it) = _i . lifetime { _visitor.visit_lifetime(it) };
- _visitor.visit_mut_type(& * _i . elem);
+ if let Some(ref it) = _i . mutability { tokens_helper(_visitor, &(it).0) };
+ _visitor.visit_type(& * _i . elem);
}
pub fn visit_type_slice<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeSlice) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index c20a220..7657273 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -254,8 +254,6 @@
# [ cfg ( feature = "full" ) ]
fn visit_method_turbofish_mut(&mut self, i: &mut MethodTurbofish) { visit_method_turbofish_mut(self, i) }
-fn visit_mut_type_mut(&mut self, i: &mut MutType) { visit_mut_type_mut(self, i) }
-
fn visit_nested_meta_item_mut(&mut self, i: &mut NestedMetaItem) { visit_nested_meta_item_mut(self, i) }
fn visit_parenthesized_generic_arguments_mut(&mut self, i: &mut ParenthesizedGenericArguments) { visit_parenthesized_generic_arguments_mut(self, i) }
@@ -1573,11 +1571,6 @@
tokens_helper(_visitor, &mut (& mut _i . gt_token).0);
}
-pub fn visit_mut_type_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut MutType) {
- if let Some(ref mut it) = _i . mutability { tokens_helper(_visitor, &mut (it).0) };
- _visitor.visit_type_mut(& mut _i . ty);
-}
-
pub fn visit_nested_meta_item_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut NestedMetaItem) {
use ::NestedMetaItem::*;
match *_i {
@@ -1972,13 +1965,15 @@
pub fn visit_type_ptr_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypePtr) {
tokens_helper(_visitor, &mut (& mut _i . star_token).0);
if let Some(ref mut it) = _i . const_token { tokens_helper(_visitor, &mut (it).0) };
- _visitor.visit_mut_type_mut(& mut * _i . elem);
+ if let Some(ref mut it) = _i . mutability { tokens_helper(_visitor, &mut (it).0) };
+ _visitor.visit_type_mut(& mut * _i . elem);
}
pub fn visit_type_reference_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeReference) {
tokens_helper(_visitor, &mut (& mut _i . and_token).0);
if let Some(ref mut it) = _i . lifetime { _visitor.visit_lifetime_mut(it) };
- _visitor.visit_mut_type_mut(& mut * _i . elem);
+ if let Some(ref mut it) = _i . mutability { tokens_helper(_visitor, &mut (it).0) };
+ _visitor.visit_type_mut(& mut * _i . elem);
}
pub fn visit_type_slice_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeSlice) {
diff --git a/src/lib.rs b/src/lib.rs
index dc869c0..a6a031f 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -88,7 +88,7 @@
mod ty;
pub use ty::{Abi, AbiKind, AngleBracketedGenericArguments, BareFnArg, BareFnArgName, BareFnType,
- GenericArgument, MutType, ParenthesizedGenericArguments, Path,
+ GenericArgument, ParenthesizedGenericArguments, Path,
PathArguments, PathSegment, PolyTraitRef, QSelf, ReturnType, Type, TypeArray,
TypeBareFn, TypeBinding, TypeGroup, TypeImplTrait, TypeInfer, TypeNever, TypeParen,
TypePath, TypePtr, TypeReference, TypeSlice, TypeTraitObject, TypeTuple};
diff --git a/src/ty.rs b/src/ty.rs
index ed18f25..970ddfd 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -20,13 +20,15 @@
pub Ptr(TypePtr {
pub star_token: Token![*],
pub const_token: Option<Token![const]>,
- pub elem: Box<MutType>,
+ pub mutability: Option<Token![mut]>,
+ pub elem: Box<Type>,
}),
/// A reference (`&'a T` or `&'a mut T`)
pub Reference(TypeReference {
pub and_token: Token![&],
pub lifetime: Option<Lifetime>,
- pub elem: Box<MutType>,
+ pub mutability: Option<Token![mut]>,
+ pub elem: Box<Type>,
}),
/// A bare function (e.g. `fn(usize) -> bool`)
pub BareFn(TypeBareFn {
@@ -82,13 +84,6 @@
}
ast_struct! {
- pub struct MutType {
- pub mutability: Option<Token![mut]>,
- pub ty: Type,
- }
-}
-
-ast_struct! {
/// A "Path" is essentially Rust's notion of a name.
///
/// It's represented as a sequence of identifiers,
@@ -423,10 +418,8 @@
(TypePtr {
const_token: mutability.1,
star_token: star,
- elem: Box::new(MutType {
- ty: target,
- mutability: mutability.0,
- }),
+ mutability: mutability.0,
+ elem: Box::new(target),
})
));
}
@@ -440,10 +433,8 @@
target: call!(Type::without_plus) >>
(TypeReference {
lifetime: life,
- elem: Box::new(MutType {
- ty: target,
- mutability: mutability,
- }),
+ mutability: mutability,
+ elem: Box::new(target),
and_token: amp,
})
));
@@ -835,13 +826,13 @@
impl ToTokens for TypePtr {
fn to_tokens(&self, tokens: &mut Tokens) {
self.star_token.to_tokens(tokens);
- match self.elem.mutability {
+ match self.mutability {
Some(ref tok) => tok.to_tokens(tokens),
None => {
TokensOrDefault(&self.const_token).to_tokens(tokens);
}
}
- self.elem.ty.to_tokens(tokens);
+ self.elem.to_tokens(tokens);
}
}
@@ -849,8 +840,8 @@
fn to_tokens(&self, tokens: &mut Tokens) {
self.and_token.to_tokens(tokens);
self.lifetime.to_tokens(tokens);
- self.elem.mutability.to_tokens(tokens);
- self.elem.ty.to_tokens(tokens);
+ self.mutability.to_tokens(tokens);
+ self.elem.to_tokens(tokens);
}
}