summaryrefslogtreecommitdiff
path: root/src/parse
diff options
context:
space:
mode:
Diffstat (limited to 'src/parse')
-rw-r--r--src/parse/mod.rs15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/parse/mod.rs b/src/parse/mod.rs
index f07fefce..5eaba8b0 100644
--- a/src/parse/mod.rs
+++ b/src/parse/mod.rs
@@ -376,9 +376,18 @@ fn expr_prec(p: &mut Parser, atomic: bool, min_prec: usize) -> ParseResult {
with_expr(p, marker)?;
}
- let op = match p.peek().and_then(BinOp::from_token) {
- Some(binop) => binop,
- None => break,
+ let op = if p.eat_if(&NodeKind::Not) {
+ if p.at(&NodeKind::In) {
+ BinOp::NotIn
+ } else {
+ p.expected("keyword `in`");
+ return Err(ParseError);
+ }
+ } else {
+ match p.peek().and_then(BinOp::from_token) {
+ Some(binop) => binop,
+ None => break,
+ }
};
let mut prec = op.precedence();