Open
Description
I'd guess that the last test case here is a rustc
bug, but I don't know about the others.
fn match_rangefull() {
match .. { _ => () } // rustc compiles it, parser-lalr rejects
}
fn field_of_range() {
123.. .start; // rustc rejects, parser-lalr accepts
}
fn eq_rangefull() {
.. == ..; // rustc rejects, parser-lalr accepts
}
fn return_rangeto() -> std::ops::RangeTo<i32> {
return ..5; // rustc compiles it, parser-lalr parses it as (return)..5
}
fn assign_range() {
let x;
x = 4..5; // rustc compiles it, parser-lalr parses it as (x = 4)..5
}
fn nonblock_expr_range() {
// rustc compiles this, and I don't think it should. I think parser-lalr
// gets it right.
//
// rustc parses it like: let _one = (1..).start;
// parser-lalr parses it like: let _one = {1; ..}.start;
//
let _one = { {1} .. }.start;
}
fn main() {}
Also see #25119.