Use dot tokens to track whether FnDecl is variadic
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index 535683d..7b976d7 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -1409,7 +1409,6 @@
         output: _visitor.fold_return_type(_i . output),
         generics: _visitor.fold_generics(_i . generics),
         variadic: _i . variadic,
-        dot_tokens: _i . dot_tokens,
     }
 }
 # [ cfg ( feature = "full" ) ]
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 1b45f60..ead15c9 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -1102,7 +1102,6 @@
     _visitor.visit_return_type(& _i . output);
     _visitor.visit_generics(& _i . generics);
     // Skipped field _i . variadic;
-    // Skipped field _i . dot_tokens;
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_foreign_item<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ForeignItem) {
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 310bdc6..38cc19e 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -1102,7 +1102,6 @@
     _visitor.visit_return_type_mut(& mut _i . output);
     _visitor.visit_generics_mut(& mut _i . generics);
     // Skipped field _i . variadic;
-    // Skipped field _i . dot_tokens;
 }
 # [ cfg ( feature = "full" ) ]
 pub fn visit_foreign_item_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ForeignItem) {
diff --git a/src/item.rs b/src/item.rs
index 97ba25b..57c9400 100644
--- a/src/item.rs
+++ b/src/item.rs
@@ -443,8 +443,7 @@
         pub inputs: Delimited<FnArg, Token![,]>,
         pub output: ReturnType,
         pub generics: Generics,
-        pub variadic: bool,
-        pub dot_tokens: Option<Token![...]>,
+        pub variadic: Option<Token![...]>,
     }
 }
 
@@ -732,12 +731,11 @@
             unsafety: unsafety,
             abi: abi,
             decl: Box::new(FnDecl {
-                dot_tokens: None,
                 fn_token: fn_,
                 paren_token: inputs.1,
                 inputs: inputs.0,
                 output: ret,
-                variadic: false,
+                variadic: None,
                 generics: Generics {
                     where_clause: where_clause,
                     .. generics
@@ -875,8 +873,7 @@
                     fn_token: fn_,
                     paren_token: parens,
                     inputs: inputs,
-                    variadic: variadic.is_some(),
-                    dot_tokens: variadic,
+                    variadic: variadic,
                     output: ret,
                     generics: Generics {
                         where_clause: where_clause,
@@ -1100,10 +1097,9 @@
                     decl: FnDecl {
                         inputs: inputs.0,
                         output: ret,
-                        variadic: false,
                         fn_token: fn_,
                         paren_token: inputs.1,
-                        dot_tokens: None,
+                        variadic: None,
                         generics: Generics {
                             where_clause: where_clause,
                             .. generics
@@ -1264,12 +1260,11 @@
                     paren_token: inputs.1,
                     inputs: inputs.0,
                     output: ret,
-                    variadic: false,
                     generics: Generics {
                         where_clause: where_clause,
                         .. generics
                     },
-                    dot_tokens: None,
+                    variadic: None,
                 },
             },
             block: Block {
@@ -1775,13 +1770,10 @@
             self.0.generics.to_tokens(tokens);
             self.0.paren_token.surround(tokens, |tokens| {
                 self.0.inputs.to_tokens(tokens);
-
-                if self.0.variadic {
-                    if !self.0.inputs.empty_or_trailing() {
-                        <Token![,]>::default().to_tokens(tokens);
-                    }
-                    TokensOrDefault(&self.0.dot_tokens).to_tokens(tokens);
+                if self.0.variadic.is_some() && !self.0.inputs.empty_or_trailing() {
+                    <Token![,]>::default().to_tokens(tokens);
                 }
+                self.0.variadic.to_tokens(tokens);
             });
             self.0.output.to_tokens(tokens);
             self.0.generics.where_clause.to_tokens(tokens);