@@ -400,18 +400,13 @@ fn parse_sep_and_kleene_op(
400
400
) -> ( Option < Token > , KleeneOp ) {
401
401
// We basically look at two token trees here, denoted as #1 and #2 below
402
402
let span = match parse_kleene_op ( input, span) {
403
- // #1 is a `?` (needs feature gate)
404
- Ok ( Ok ( ( op, _op1_span) ) ) if op == KleeneOp :: ZeroOrOne => {
405
- return ( None , op) ;
406
- }
407
-
408
- // #1 is a `+` or `*` KleeneOp
403
+ // #1 is a `?`, `+`, or `*` KleeneOp
409
404
Ok ( Ok ( ( op, _) ) ) => return ( None , op) ,
410
405
411
406
// #1 is a separator followed by #2, a KleeneOp
412
407
Ok ( Err ( token) ) => match parse_kleene_op ( input, token. span ) {
413
408
// #2 is the `?` Kleene op, which does not take a separator (error)
414
- Ok ( Ok ( ( op , _op2_span ) ) ) if op == KleeneOp :: ZeroOrOne => {
409
+ Ok ( Ok ( ( KleeneOp :: ZeroOrOne , _ ) ) ) => {
415
410
// Error!
416
411
sess. span_diagnostic . span_err (
417
412
token. span ,
@@ -425,11 +420,8 @@ fn parse_sep_and_kleene_op(
425
420
// #2 is a KleeneOp :D
426
421
Ok ( Ok ( ( op, _) ) ) => return ( Some ( token) , op) ,
427
422
428
- // #2 is a random token :(
429
- Ok ( Err ( token) ) => token. span ,
430
-
431
- // #2 is not a token at all :(
432
- Err ( span) => span,
423
+ // #2 is a random token or not a token at all :(
424
+ Ok ( Err ( Token { span, .. } ) ) | Err ( span) => span,
433
425
} ,
434
426
435
427
// #1 is not a token
0 commit comments