From 03cbdea4b4dd81929743154ad79835bfbdf63db3 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Sun, 12 Feb 2023 10:17:35 +0100 Subject: Fix "not in" precedence --- src/syntax/parser.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'src/syntax') 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(); -- cgit v1.2.3