Change comparison operators to have Fixity::None
This commit is contained in:
parent
d748d1d953
commit
fe65e886f3
3 changed files with 8 additions and 17 deletions
|
@ -153,9 +153,10 @@ impl AssocOp {
|
|||
match *self {
|
||||
Assign | AssignOp(_) => Fixity::Right,
|
||||
As | Multiply | Divide | Modulus | Add | Subtract | ShiftLeft | ShiftRight | BitAnd
|
||||
| BitXor | BitOr | Less | Greater | LessEqual | GreaterEqual | Equal | NotEqual
|
||||
| LAnd | LOr => Fixity::Left,
|
||||
DotDot | DotDotEq => Fixity::None,
|
||||
| BitXor | BitOr | LAnd | LOr => Fixity::Left,
|
||||
Less | Greater | LessEqual | GreaterEqual | Equal | NotEqual | DotDot | DotDotEq => {
|
||||
Fixity::None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -279,13 +279,9 @@ impl<'a> Parser<'a> {
|
|||
break;
|
||||
}
|
||||
|
||||
let fixity = op.fixity();
|
||||
let min_prec = match fixity {
|
||||
let min_prec = match op.fixity() {
|
||||
Fixity::Right => Bound::Included(prec),
|
||||
Fixity::Left => Bound::Excluded(prec),
|
||||
// We currently have no non-associative operators that are not handled above by
|
||||
// the special cases. The code is here only for future convenience.
|
||||
Fixity::None => Bound::Excluded(prec),
|
||||
Fixity::Left | Fixity::None => Bound::Excluded(prec),
|
||||
};
|
||||
let (rhs, _) = self.with_res(restrictions - Restrictions::STMT_EXPR, |this| {
|
||||
let attrs = this.parse_outer_attributes()?;
|
||||
|
@ -337,10 +333,6 @@ impl<'a> Parser<'a> {
|
|||
self.dcx().span_bug(span, "AssocOp should have been handled by special case")
|
||||
}
|
||||
};
|
||||
|
||||
if let Fixity::None = fixity {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Ok((lhs, parsed_something))
|
||||
|
|
|
@ -97,6 +97,8 @@ static EXPRS: &[&str] = &[
|
|||
"2..(2..2)",
|
||||
"(2..2)..",
|
||||
"..(2..2)",
|
||||
// Grammar restriction: comparison operators cannot be chained (1 < 2 == false).
|
||||
"((1 < 2) == false) as usize",
|
||||
// Grammar restriction: the value in let-else is not allowed to end in a
|
||||
// curly brace.
|
||||
"{ let _ = 1 + 1 else {}; }",
|
||||
|
@ -121,10 +123,6 @@ static EXPRS: &[&str] = &[
|
|||
"if let _ = () && (Struct {}).x {}",
|
||||
*/
|
||||
/*
|
||||
// FIXME: pretty-printer produces invalid syntax. `(1 < 2 == false) as usize`
|
||||
"((1 < 2) == false) as usize",
|
||||
*/
|
||||
/*
|
||||
// FIXME: pretty-printer produces invalid syntax. `for _ in 1..{ 2 } {}`
|
||||
"for _ in (1..{ 2 }) {}",
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue