Preliminary support for binops in if-discriminators

The BNF grammar is a bit more liberal than any successfully-compiled
schala program should be, in that it allows things like `if x < is
pattern`. It's okay if that parses successfully and then is an error at
typechecking.
This commit is contained in:
greg 2018-08-19 21:25:07 -07:00
parent 98f597f00a
commit 0d13b5e3bc

View File

@ -653,12 +653,11 @@ impl Parser {
parse_method!(discriminator(&mut self) -> ParseResult<Discriminator> {
let lhs = self.prefix_expr()?;
Ok(match self.peek() {
//TODO make this whole process nicer
Operator(_) | Period | Pipe | Slash => {
unimplemented!()
},
_ => Discriminator::Simple(lhs)
let ref next = self.peek();
Ok(if let Some(op) = BinOp::from_sigil_token(next) {
Discriminator::BinOp(lhs, op)
} else {
Discriminator::Simple(lhs)
})
});