Use the span of variadic ... as the span of trailing comma
diff --git a/src/token.rs b/src/token.rs
index cfff6f6..8c2f2d0 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -32,6 +32,12 @@
         #[$doc]
         pub struct $name(pub [Span; $len]);
 
+        impl $name {
+            pub fn new(span: Span) -> Self {
+                $name([span; $len])
+            }
+        }
+
         #[cfg(feature = "extra-traits")]
         impl ::std::fmt::Debug for $name {
             fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
diff --git a/src/ty.rs b/src/ty.rs
index 201b257..05ef54c 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -1105,10 +1105,13 @@
             self.fn_token.to_tokens(tokens);
             self.paren_token.surround(tokens, |tokens| {
                 self.inputs.to_tokens(tokens);
-                if self.variadic.is_some() && !self.inputs.empty_or_trailing() {
-                    <Token![,]>::default().to_tokens(tokens);
+                if let Some(variadic) = self.variadic {
+                    if !self.inputs.empty_or_trailing() {
+                        let span = variadic.0[0];
+                        <Token![,]>::new(span).to_tokens(tokens);
+                    }
+                    variadic.to_tokens(tokens);
                 }
-                self.variadic.to_tokens(tokens);
             });
             self.output.to_tokens(tokens);
         }