diff --git a/codegen/src/main.rs b/codegen/src/main.rs
index c874fb4..5ebe8e5 100644
--- a/codegen/src/main.rs
+++ b/codegen/src/main.rs
@@ -740,7 +740,7 @@
                             state.visit_mut_impl.push_str(&binding);
                             state.fold_impl.push_str(&binding);
 
-                            let res = fields.fields
+                            let res = fields.unnamed
                                 .iter()
                                 .enumerate()
                                 .map(|(idx, el)| {
@@ -843,7 +843,7 @@
                         state
                             .fold_impl
                             .push_str(&format!("    {} {{\n", s.ast.ident));
-                        fields.fields
+                        fields.named
                             .iter()
                             .map(|el| {
                                 let id = el.item().ident;
@@ -855,7 +855,7 @@
                         state
                             .fold_impl
                             .push_str(&format!("    {} (\n", s.ast.ident));
-                        fields.fields
+                        fields.unnamed
                             .iter()
                             .enumerate()
                             .map(|(idx, el)| {
diff --git a/src/data.rs b/src/data.rs
index dade46c..439a21c 100644
--- a/src/data.rs
+++ b/src/data.rs
@@ -25,13 +25,13 @@
         /// y: f64 }`.
         pub Named(FieldsNamed {
             pub brace_token: token::Brace,
-            pub fields: Punctuated<Field, Token![,]>,
+            pub named: Punctuated<Field, Token![,]>,
         }),
 
         /// Unnamed fields of a tuple struct or tuple variant such as `Some(T)`.
         pub Unnamed(FieldsUnnamed {
             pub paren_token: token::Paren,
-            pub fields: Punctuated<Field, Token![,]>,
+            pub unnamed: Punctuated<Field, Token![,]>,
         }),
 
         /// Unit struct or unit variant such as `None`.
@@ -124,7 +124,7 @@
             braces!(call!(Punctuated::parse_terminated_with, Field::parse_named)),
             |(brace, fields)| FieldsNamed {
                 brace_token: brace,
-                fields: fields,
+                named: fields,
             }
         ));
     }
@@ -134,7 +134,7 @@
             parens!(call!(Punctuated::parse_terminated_with, Field::parse_unnamed)),
             |(paren, fields)| FieldsUnnamed {
                 paren_token: paren,
-                fields: fields,
+                unnamed: fields,
             }
         ));
     }
@@ -253,7 +253,7 @@
     impl ToTokens for FieldsNamed {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.brace_token.surround(tokens, |tokens| {
-                self.fields.to_tokens(tokens);
+                self.named.to_tokens(tokens);
             });
         }
     }
@@ -261,7 +261,7 @@
     impl ToTokens for FieldsUnnamed {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.paren_token.surround(tokens, |tokens| {
-                self.fields.to_tokens(tokens);
+                self.unnamed.to_tokens(tokens);
             });
         }
     }
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index a7438b9..d5ebc75 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -1372,14 +1372,14 @@
 pub fn fold_fields_named<V: Folder + ?Sized>(_visitor: &mut V, _i: FieldsNamed) -> FieldsNamed {
     FieldsNamed {
         brace_token: Brace(tokens_helper(_visitor, &(_i . brace_token).0)),
-        fields: FoldHelper::lift(_i . fields, |it| { _visitor.fold_field(it) }),
+        named: FoldHelper::lift(_i . named, |it| { _visitor.fold_field(it) }),
     }
 }
 
 pub fn fold_fields_unnamed<V: Folder + ?Sized>(_visitor: &mut V, _i: FieldsUnnamed) -> FieldsUnnamed {
     FieldsUnnamed {
         paren_token: Paren(tokens_helper(_visitor, &(_i . paren_token).0)),
-        fields: FoldHelper::lift(_i . fields, |it| { _visitor.fold_field(it) }),
+        unnamed: FoldHelper::lift(_i . unnamed, |it| { _visitor.fold_field(it) }),
     }
 }
 # [ cfg ( feature = "full" ) ]
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 5e27de4..eb23394 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -1087,12 +1087,12 @@
 
 pub fn visit_fields_named<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldsNamed) {
     tokens_helper(_visitor, &(& _i . brace_token).0);
-    for el in & _i . fields { let it = el.item(); _visitor.visit_field(it) };
+    for el in & _i . named { let it = el.item(); _visitor.visit_field(it) };
 }
 
 pub fn visit_fields_unnamed<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast FieldsUnnamed) {
     tokens_helper(_visitor, &(& _i . paren_token).0);
-    for el in & _i . fields { let it = el.item(); _visitor.visit_field(it) };
+    for el in & _i . unnamed { let it = el.item(); _visitor.visit_field(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_file<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast File) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index f2431b2..4a38b74 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -1087,12 +1087,12 @@
 
 pub fn visit_fields_named_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut FieldsNamed) {
     tokens_helper(_visitor, &mut (& mut _i . brace_token).0);
-    for mut el in & mut _i . fields { let it = el.item_mut(); _visitor.visit_field_mut(it) };
+    for mut el in & mut _i . named { let it = el.item_mut(); _visitor.visit_field_mut(it) };
 }
 
 pub fn visit_fields_unnamed_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut FieldsUnnamed) {
     tokens_helper(_visitor, &mut (& mut _i . paren_token).0);
-    for mut el in & mut _i . fields { let it = el.item_mut(); _visitor.visit_field_mut(it) };
+    for mut el in & mut _i . unnamed { let it = el.item_mut(); _visitor.visit_field_mut(it) };
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_file_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut File) {
diff --git a/tests/test_derive_input.rs b/tests/test_derive_input.rs
index 9c42eba..4055b7f 100644
--- a/tests/test_derive_input.rs
+++ b/tests/test_derive_input.rs
@@ -92,7 +92,7 @@
             struct_token: Default::default(),
             fields: Fields::Named(FieldsNamed {
                 brace_token: Default::default(),
-                fields: punctuated![
+                named: punctuated![
                     Field {
                         ident: Some("ident".into()),
                         colon_token: Some(Default::default()),
@@ -233,7 +233,7 @@
                     attrs: Vec::new(),
                     fields: Fields::Unnamed(FieldsUnnamed {
                         paren_token: Default::default(),
-                        fields: punctuated![
+                        unnamed: punctuated![
                             Field {
                                 colon_token: None,
                                 ident: None,
@@ -253,7 +253,7 @@
                     attrs: Vec::new(),
                     fields: Fields::Unnamed(FieldsUnnamed {
                         paren_token: Default::default(),
-                        fields: punctuated![
+                        unnamed: punctuated![
                             Field {
                                 ident: None,
                                 colon_token: None,
@@ -511,7 +511,7 @@
         data: Data::Struct(DataStruct {
             fields: Fields::Unnamed(FieldsUnnamed {
                 paren_token: Default::default(),
-                fields: punctuated![
+                unnamed: punctuated![
                     Field {
                         ident: None,
                         vis: Visibility::Restricted(VisRestricted {
