You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This makes it possible to use `inline_const` (rust-lang#76001) and `let_chains`
(rust-lang#53667) inside macros' `expr` patterns in a future edition by
bifurcating the `expr` nonterminal in a similar way to `pat2021` to
remove some backwards compatibility exceptions that disallow
`const`/`let` at the beginning of an `expr` match.
Fixesrust-lang#84155 and relaxes the backward compat restriction from rust-lang#80135 for
a future edition. This is not intended to go into 2021 as it I don't
think it's simple to write an automatic fix, and certainly not now that
it's past the soft deadline for inclusion in 2021 by a long shot.
Here is a pathological case of rust-lang#79908 that forces this to be an edition
change:
```rust
macro_rules! evil {
($e:expr) => {
// or something else
const {$e-1}
};
(const $b:block) => {
const {$b}
}
}
fn main() {
let x = 5;
match x {
evil!(const { 5 }) => panic!("oh no"),
_ => (),
};
}
```
0 commit comments