diff options
| author | Laurenz <laurmaedje@gmail.com> | 2023-02-12 10:17:35 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2023-02-12 10:17:35 +0100 |
| commit | 03cbdea4b4dd81929743154ad79835bfbdf63db3 (patch) | |
| tree | e09596138454db8912b68a896b8354ac64ee37e4 /src | |
| parent | ebe919220d8b8f2966c15d73df82f20f38f4f9d5 (diff) | |
Fix "not in" precedence
Diffstat (limited to 'src')
| -rw-r--r-- | src/syntax/parser.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/syntax/parser.rs b/src/syntax/parser.rs index 9f951389..8082fd64 100644 --- a/src/syntax/parser.rs +++ b/src/syntax/parser.rs @@ -562,16 +562,17 @@ fn code_expr_prec(p: &mut Parser, atomic: bool, min_prec: usize) { continue; } - let binop = if p.eat_if(SyntaxKind::Not) { - if p.at(SyntaxKind::In) { - Some(ast::BinOp::NotIn) + let binop = + if ast::BinOp::NotIn.precedence() >= min_prec && p.eat_if(SyntaxKind::Not) { + if p.at(SyntaxKind::In) { + Some(ast::BinOp::NotIn) + } else { + p.expected("keyword `in`"); + break; + } } else { - p.expected("keyword `in`"); - break; - } - } else { - ast::BinOp::from_kind(p.current()) - }; + ast::BinOp::from_kind(p.current()) + }; if let Some(op) = binop { let mut prec = op.precedence(); |
