Parse inline const patterns
This commit is contained in:
parent
c3e8d7965c
commit
59d07c3ae5
@ -313,6 +313,9 @@ impl<'a> Parser<'a> {
|
||||
let pat = self.parse_pat_with_range_pat(false, None)?;
|
||||
self.sess.gated_spans.gate(sym::box_patterns, lo.to(self.prev_token.span));
|
||||
PatKind::Box(pat)
|
||||
} else if self.check_inline_const() {
|
||||
// Parse `const pat`
|
||||
PatKind::Lit(self.parse_const_expr(lo.to(self.token.span))?)
|
||||
} else if self.can_be_ident_pat() {
|
||||
// Parse `ident @ pat`
|
||||
// This can give false positives and parse nullary enums,
|
||||
|
20
src/test/ui/parser/inline_const/const_match_pat_parses.rs
Normal file
20
src/test/ui/parser/inline_const/const_match_pat_parses.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// check-pass
|
||||
// compile-flags: -Z parse-only
|
||||
|
||||
#![feature(inline_const)]
|
||||
const MMIO_BIT1: u8 = 4;
|
||||
const MMIO_BIT2: u8 = 5;
|
||||
|
||||
fn main() {
|
||||
match read_mmio() {
|
||||
0 => {}
|
||||
const { 1 << MMIO_BIT1 } => println!("FOO"),
|
||||
const { 1 << MMIO_BIT2 } => println!("BAR"),
|
||||
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
fn read_mmio() -> u8 {
|
||||
1 << 5
|
||||
}
|
@ -13,4 +13,4 @@
|
||||
|
||||
fn f() { |[](* }
|
||||
//~^ ERROR expected one of `,` or `:`, found `(`
|
||||
//~| ERROR expected one of `&`, `(`, `)`, `-`, `...`, `..=`, `..`, `[`, `_`, `box`, `mut`, `ref`, `|`, identifier, or path, found `*`
|
||||
//~| ERROR expected one of `&`, `(`, `)`, `-`, `...`, `..=`, `..`, `[`, `_`, `box`, `const`, `mut`, `ref`, `|`, identifier, or path, found `*`
|
||||
|
@ -4,7 +4,7 @@ error: expected one of `,` or `:`, found `(`
|
||||
LL | fn f() { |[](* }
|
||||
| ^ expected one of `,` or `:`
|
||||
|
||||
error: expected one of `&`, `(`, `)`, `-`, `...`, `..=`, `..`, `[`, `_`, `box`, `mut`, `ref`, `|`, identifier, or path, found `*`
|
||||
error: expected one of `&`, `(`, `)`, `-`, `...`, `..=`, `..`, `[`, `_`, `box`, `const`, `mut`, `ref`, `|`, identifier, or path, found `*`
|
||||
--> $DIR/issue-66357-unexpected-unreachable.rs:14:14
|
||||
|
|
||||
LL | fn f() { |[](* }
|
||||
|
Loading…
Reference in New Issue
Block a user