Expect a specific token
(expected: Token)
| 3448 | |
| 3449 | /// Expect a specific token |
| 3450 | fn expect_token(expected: Token) -> impl Fn(&[Token]) -> IResult<&[Token], Token> { |
| 3451 | move |tokens: &[Token]| { |
| 3452 | if let Some(token) = tokens.first() { |
| 3453 | if std::mem::discriminant(token) == std::mem::discriminant(&expected) { |
| 3454 | Ok((&tokens[1..], token.clone())) |
| 3455 | } else { |
| 3456 | Err(nom::Err::Error(nom::error::Error::new( |
| 3457 | tokens, |
| 3458 | nom::error::ErrorKind::Tag, |
| 3459 | ))) |
| 3460 | } |
| 3461 | } else { |
| 3462 | Err(nom::Err::Error(nom::error::Error::new( |
| 3463 | tokens, |
| 3464 | nom::error::ErrorKind::Tag, |
| 3465 | ))) |
| 3466 | } |
| 3467 | } |
| 3468 | } |
| 3469 | |
| 3470 | // Helper function for tag_token (alias for expect_token for compatibility) |
| 3471 | fn tag_token(expected: Token) -> impl Fn(&[Token]) -> IResult<&[Token], Token> { |
no test coverage detected