Remove empty VisInherited type
diff --git a/src/data.rs b/src/data.rs
index 3a7c025..e872fb9 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -100,7 +100,7 @@
}),
/// Inherited, i.e. private.
- pub Inherited(VisInherited {}),
+ pub Inherited,
}
}
@@ -195,7 +195,7 @@
})
} }
|
- epsilon!() => { |_| Visibility::Inherited(VisInherited {}) }
+ epsilon!() => { |_| Visibility::Inherited }
));
}
}
@@ -273,8 +273,4 @@
});
}
}
-
- impl ToTokens for VisInherited {
- fn to_tokens(&self, _tokens: &mut Tokens) {}
- }
}
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 09ec5ca..4c54cb3 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -378,8 +378,6 @@
fn fold_vis_crate(&mut self, i: VisCrate) -> VisCrate { fold_vis_crate(self, i) }
-fn fold_vis_inherited(&mut self, i: VisInherited) -> VisInherited { fold_vis_inherited(self, i) }
-
fn fold_vis_public(&mut self, i: VisPublic) -> VisPublic { fold_vis_public(self, i) }
fn fold_vis_restricted(&mut self, i: VisRestricted) -> VisRestricted { fold_vis_restricted(self, i) }
@@ -2729,11 +2727,6 @@
}
}
-pub fn fold_vis_inherited<V: Folder + ?Sized>(_visitor: &mut V, _i: VisInherited) -> VisInherited {
- VisInherited {
- }
-}
-
pub fn fold_vis_public<V: Folder + ?Sized>(_visitor: &mut V, _i: VisPublic) -> VisPublic {
VisPublic {
pub_token: Token ! [ pub ](tokens_helper(_visitor, &(_i . pub_token).0)),
@@ -2767,11 +2760,7 @@
_visitor.fold_vis_restricted(_binding_0),
)
}
- Inherited(_binding_0, ) => {
- Inherited (
- _visitor.fold_vis_inherited(_binding_0),
- )
- }
+ Inherited => { Inherited }
}
}
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index e63cffb..0963158 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -374,8 +374,6 @@
fn visit_vis_crate(&mut self, i: &'ast VisCrate) { visit_vis_crate(self, i) }
-fn visit_vis_inherited(&mut self, i: &'ast VisInherited) { visit_vis_inherited(self, i) }
-
fn visit_vis_public(&mut self, i: &'ast VisPublic) { visit_vis_public(self, i) }
fn visit_vis_restricted(&mut self, i: &'ast VisRestricted) { visit_vis_restricted(self, i) }
@@ -2108,9 +2106,6 @@
tokens_helper(_visitor, &(& _i . crate_token).0);
}
-pub fn visit_vis_inherited<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisInherited) {
-}
-
pub fn visit_vis_public<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast VisPublic) {
tokens_helper(_visitor, &(& _i . pub_token).0);
}
@@ -2134,9 +2129,7 @@
Restricted(ref _binding_0, ) => {
_visitor.visit_vis_restricted(_binding_0);
}
- Inherited(ref _binding_0, ) => {
- _visitor.visit_vis_inherited(_binding_0);
- }
+ Inherited => { }
}
}
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 44a4a2e..ac36821 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -374,8 +374,6 @@
fn visit_vis_crate_mut(&mut self, i: &mut VisCrate) { visit_vis_crate_mut(self, i) }
-fn visit_vis_inherited_mut(&mut self, i: &mut VisInherited) { visit_vis_inherited_mut(self, i) }
-
fn visit_vis_public_mut(&mut self, i: &mut VisPublic) { visit_vis_public_mut(self, i) }
fn visit_vis_restricted_mut(&mut self, i: &mut VisRestricted) { visit_vis_restricted_mut(self, i) }
@@ -2108,9 +2106,6 @@
tokens_helper(_visitor, &mut (& mut _i . crate_token).0);
}
-pub fn visit_vis_inherited_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut VisInherited) {
-}
-
pub fn visit_vis_public_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut VisPublic) {
tokens_helper(_visitor, &mut (& mut _i . pub_token).0);
}
@@ -2134,9 +2129,7 @@
Restricted(ref mut _binding_0, ) => {
_visitor.visit_vis_restricted_mut(_binding_0);
}
- Inherited(ref mut _binding_0, ) => {
- _visitor.visit_vis_inherited_mut(_binding_0);
- }
+ Inherited => { }
}
}
diff --git a/src/lib.rs b/src/lib.rs
index a8c4a39..8fd6e0a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -30,8 +30,7 @@
pub use attr::{AttrStyle, Attribute, MetaItem, MetaItemList, MetaNameValue, NestedMetaItem};
mod data;
-pub use data::{Field, Variant, VariantData, VisCrate, VisInherited, VisPublic, VisRestricted,
- Visibility};
+pub use data::{Field, Variant, VariantData, VisCrate, VisPublic, VisRestricted, Visibility};
mod expr;
pub use expr::{Expr, ExprAddrOf, ExprArray, ExprAssign, ExprAssignOp, ExprBinary, ExprBlock,
diff --git a/src/macros.rs b/src/macros.rs
index 1710444..9b73717 100644
--- a/src/macros.rs
+++ b/src/macros.rs
@@ -59,7 +59,7 @@
pub enum $name:ident {
$(
$(#[$variant_attr:meta])*
- pub $variant:ident($member:ident $($rest:tt)*),
+ pub $variant:ident $( ($member:ident $($rest:tt)*) )*,
)*
}
@@ -70,7 +70,7 @@
pub enum $name {
$(
$(#[$variant_attr])*
- $variant($member),
+ $variant $( ($member) )*,
)*
}
}
@@ -78,20 +78,26 @@
$(
maybe_ast_struct! {
$(#[$variant_attr])*
- pub struct $member $($rest)*
+ $(
+ pub struct $member $($rest)*
+ )*
}
- impl From<$member> for $name {
- fn from(e: $member) -> $name {
- $name::$variant(e)
+ $(
+ impl From<$member> for $name {
+ fn from(e: $member) -> $name {
+ $name::$variant(e)
+ }
}
- }
+ )*
)*
#[cfg(feature = "printing")]
generate_to_tokens! {
$($remaining)*
- enum $name { $($variant [$($rest)*],)* }
+ ()
+ tokens
+ $name { $($variant $( [$($rest)*] )*,)* }
}
)
}
@@ -100,18 +106,29 @@
macro_rules! generate_to_tokens {
(do_not_generate_to_tokens $($foo:tt)*) => ();
- (enum $name:ident { $($variant:ident [$($rest:tt)*],)* }) => (
+ (($($arms:tt)*) $tokens:ident $name:ident { $variant:ident, $($next:tt)*}) => {
+ generate_to_tokens!(
+ ($($arms)* $name::$variant => {})
+ $tokens $name { $($next)* }
+ );
+ };
+
+ (($($arms:tt)*) $tokens:ident $name:ident { $variant:ident [$($rest:tt)*], $($next:tt)*}) => {
+ generate_to_tokens!(
+ ($($arms)* $name::$variant(ref _e) => to_tokens_call!(_e, $tokens, $($rest)*),)
+ $tokens $name { $($next)* }
+ );
+ };
+
+ (($($arms:tt)*) $tokens:ident $name:ident {}) => {
impl ::quote::ToTokens for $name {
- fn to_tokens(&self, tokens: &mut ::quote::Tokens) {
+ fn to_tokens(&self, $tokens: &mut ::quote::Tokens) {
match *self {
- $(
- $name::$variant(ref _e) =>
- to_tokens_call!(_e, tokens, $($rest)*),
- )*
+ $($arms)*
}
}
}
- );
+ };
}
#[cfg(all(feature = "printing", feature = "full"))]
@@ -135,7 +152,9 @@
macro_rules! maybe_ast_struct {
(
$(#[$attr:meta])*
- pub struct $name:ident
+ $(
+ pub struct $name:ident
+ )*
) => ();
($($rest:tt)*) => (ast_struct! { $($rest)* });
diff --git a/syn_codegen/src/main.rs b/syn_codegen/src/main.rs
index 3624655..68ac85b 100644
--- a/syn_codegen/src/main.rs
+++ b/syn_codegen/src/main.rs
@@ -245,23 +245,23 @@
// A single variant of an ast_enum_of_structs!
struct EosVariant {
name: Ident,
- member: Path,
+ member: Option<Path>,
inner: Option<AstItem>,
}
named!(eos_variant -> EosVariant, do_parse!(
many0!(Attribute::parse_outer) >>
keyword!(pub) >>
variant: syn!(Ident) >>
- member: map!(parens!(alt!(
+ member: option!(map!(parens!(alt!(
call!(ast_struct_inner) => { |x: AstItem| (Path::from(x.ast.ident), Some(x)) }
|
syn!(Path) => { |x| (x, None) }
- )), |x| x.0) >>
+ )), |x| x.0)) >>
punct!(,) >>
(EosVariant {
name: variant,
- member: member.0,
- inner: member.1,
+ member: member.clone().map(|x| x.0),
+ inner: member.map(|x| x.1).unwrap_or_default(),
})
));
@@ -281,8 +281,10 @@
let enum_item = {
let variants = body.0.iter().map(|v| {
let name = v.name;
- let member = &v.member;
- quote!(#name(#member))
+ match v.member {
+ Some(ref member) => quote!(#name(#member)),
+ None => quote!(#name),
+ }
});
parse_tokens::<DeriveInput>(quote! {
pub enum #id { #(#variants),* }
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index 4462b1c..a1eebdd 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -43,7 +43,7 @@
let expected = DeriveInput {
ident: "Unit".into(),
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: Vec::new(),
generics: Generics::default(),
body: Body::Struct(BodyStruct {
@@ -234,7 +234,7 @@
Field {
colon_token: None,
ident: None,
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: Vec::new(),
ty: TypePath {
qself: None,
@@ -255,7 +255,7 @@
Field {
ident: None,
colon_token: None,
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: Vec::new(),
ty: TypePath {
qself: None,
@@ -361,7 +361,7 @@
let expected = DeriveInput {
ident: "Dummy".into(),
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: vec![
Attribute {
bracket_token: Default::default(),
@@ -423,7 +423,7 @@
let expected = DeriveInput {
ident: "S".into(),
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: vec![
Attribute {
bracket_token: Default::default(),
@@ -461,7 +461,7 @@
let expected = DeriveInput {
ident: "S".into(),
- vis: Visibility::Inherited(VisInherited {}),
+ vis: Visibility::Inherited,
attrs: vec![
Attribute {
bracket_token: Default::default(),