Fix placement of where-clause in tuple structs
diff --git a/src/data.rs b/src/data.rs
index 9e8e9b4..26367dd 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -51,24 +51,40 @@
#[cfg(feature = "parsing")]
pub mod parsing {
use super::*;
+ use WhereClause;
use attr::parsing::outer_attr;
use constant::parsing::const_expr;
+ use generics::parsing::where_clause;
use ident::parsing::ident;
use ty::parsing::ty;
- named!(pub struct_body -> VariantData, alt!(
- struct_like_body => { VariantData::Struct }
+ named!(pub struct_body -> (WhereClause, VariantData), alt!(
+ do_parse!(
+ wh: where_clause >>
+ body: struct_like_body >>
+ (wh, VariantData::Struct(body))
+ )
|
- terminated!(tuple_like_body, punct!(";")) => { VariantData::Tuple }
+ do_parse!(
+ body: tuple_like_body >>
+ wh: where_clause >>
+ punct!(";") >>
+ (wh, VariantData::Tuple(body))
+ )
|
- punct!(";") => { |_| VariantData::Unit }
+ do_parse!(
+ wh: where_clause >>
+ punct!(";") >>
+ (wh, VariantData::Unit)
+ )
));
- named!(pub enum_body -> Vec<Variant>, do_parse!(
+ named!(pub enum_body -> (WhereClause, Vec<Variant>), do_parse!(
+ wh: where_clause >>
punct!("{") >>
variants: terminated_list!(punct!(","), variant) >>
punct!("}") >>
- (variants)
+ (wh, variants)
));
named!(variant -> Variant, do_parse!(