From 2af11a5a714c9cb478e550d757b9eef113f5ddfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Gaarde?= Date: Fri, 8 Nov 2019 16:44:58 +0100 Subject: [PATCH] Parse TypeTuple with one element requires trailing comma --- src/ty.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ty.rs b/src/ty.rs index 1e5b51f3df..b2e086becf 100644 --- a/src/ty.rs +++ b/src/ty.rs @@ -784,9 +784,27 @@ pub mod parsing { impl Parse for TypeTuple { fn parse(input: ParseStream) -> Result { let content; + let paren_token = parenthesized!(content in input); + + if content.is_empty() { + return Ok(TypeTuple { + paren_token, + elems: Punctuated::new(), + }); + } + + let first: Type = content.parse()?; Ok(TypeTuple { - paren_token: parenthesized!(content in input), - elems: content.parse_terminated(Type::parse)?, + paren_token, + elems: { + let mut elems = Punctuated::new(); + elems.push_value(first); + elems.push_punct(content.parse()?); + let rest: Punctuated = + content.parse_terminated(Parse::parse)?; + elems.extend(rest); + elems + }, }) } }