From c9bdfacf92c578b9af50f6528fc9f73e79d013bd Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sat, 19 Oct 2024 22:35:07 -0700 Subject: [PATCH] Tweak parsing logic for TypeParamBound --- src/generics.rs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/generics.rs b/src/generics.rs index ef1c52f0ea..206bd7e9db 100644 --- a/src/generics.rs +++ b/src/generics.rs @@ -801,25 +801,23 @@ pub(crate) mod parsing { let mut params = Punctuated::new(); loop { let lookahead = input.lookahead1(); - let capture = if lookahead.peek(Lifetime) { - input.parse().map(CapturedParam::Lifetime) + params.push_value(if lookahead.peek(Lifetime) { + input.parse().map(CapturedParam::Lifetime)? } else if lookahead.peek(Ident) { - input.parse().map(CapturedParam::Ident) + input.parse().map(CapturedParam::Ident)? } else if lookahead.peek(Token![>]) { break; } else { return Err(lookahead.error()); - }?; - params.push_value(capture); + }); let lookahead = input.lookahead1(); - let comma = if lookahead.peek(Token![,]) { - input.parse::() + params.push_punct(if lookahead.peek(Token![,]) { + input.parse::()? } else if lookahead.peek(Token![>]) { break; } else { return Err(lookahead.error()); - }?; - params.push_punct(comma); + }); } let gt_token: Token![>] = input.parse()?; return if allow_precise_capture {