diff options
Diffstat (limited to 'src/syntax/parser.rs')
| -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(); |
