e1d8ad3fb0
parser recovery (so that expected errors match up) I'm opting into parser recovery in all these cases out of expediency, not because the error messages you get with recovery enabled are actually all that usable in all cases listed.
34 lines
1.1 KiB
Rust
34 lines
1.1 KiB
Rust
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution and at
|
|
// http://rust-lang.org/COPYRIGHT.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
// compile-flags: -Z continue-parse-after-error
|
|
|
|
macro_rules! parallel {
|
|
(
|
|
// If future has `pred`/`moelarry` fragments (where "pred" is
|
|
// "like expr, but with `{` in its FOLLOW set"), then could
|
|
// use `pred` instead of future-proof erroring here. See also:
|
|
//
|
|
// https://github.com/rust-lang/rfcs/pull/1384#issuecomment-160165525
|
|
for $id:ident in $iter:expr { //~ WARN `$iter:expr` is followed by `{`
|
|
$( $inner:expr; )*
|
|
}
|
|
) => {};
|
|
}
|
|
|
|
|
|
fn main() {
|
|
parallel! {
|
|
for i in 0..n {
|
|
x += i; //~ ERROR expected `:`, found `+=`
|
|
} //~ ERROR unexpected end of macro invocation
|
|
}
|
|
}
|