diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-12-08 17:18:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-08 17:18:50 +0100 |
| commit | 1868c8f66f25c3493b26f23e36a861328cdedbdb (patch) | |
| tree | e63475b9961590dbeb0524784d5f753160e945dd /tests/ui/pattern | |
| parent | f33a8c6426074b7ce8d08740e9805fdca96ee150 (diff) | |
| parent | 2459dbb4bad87c38284b0a2ba4f2d6d37db99627 (diff) | |
| download | rust-1868c8f66f25c3493b26f23e36a861328cdedbdb.tar.gz rust-1868c8f66f25c3493b26f23e36a861328cdedbdb.zip | |
Rollup merge of #133424 - Nadrieril:guard-patterns-parsing, r=fee1-dead
Parse guard patterns This implements the parsing of [RFC3637 Guard Patterns](https://rust-lang.github.io/rfcs/3637-guard-patterns.html) (see also [tracking issue](https://github.com/rust-lang/rust/issues/129967)). This PR is extracted from https://github.com/rust-lang/rust/pull/129996 with minor modifications. cc `@max-niederman`
Diffstat (limited to 'tests/ui/pattern')
| -rw-r--r-- | tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr | 4 | ||||
| -rw-r--r-- | tests/ui/pattern/rfc-3637-guard-patterns/macro-rules.rs | 20 |
2 files changed, 22 insertions, 2 deletions
diff --git a/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr b/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr index da8f4ca5f0c..6ce8f6d31a0 100644 --- a/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr +++ b/tests/ui/pattern/bindings-after-at/nested-type-ascription-syntactically-invalid.stderr @@ -6,11 +6,11 @@ LL | let a: u8 @ b = 0; | | | while parsing the type for `a` -error: expected one of `)`, `,`, `@`, or `|`, found `:` +error: expected one of `)`, `,`, `@`, `if`, or `|`, found `:` --> $DIR/nested-type-ascription-syntactically-invalid.rs:24:15 | LL | let a @ (b: u8); - | ^ expected one of `)`, `,`, `@`, or `|` + | ^ expected one of `)`, `,`, `@`, `if`, or `|` | = note: type ascription syntax has been removed, see issue #101728 <https://github.com/rust-lang/rust/issues/101728> diff --git a/tests/ui/pattern/rfc-3637-guard-patterns/macro-rules.rs b/tests/ui/pattern/rfc-3637-guard-patterns/macro-rules.rs new file mode 100644 index 00000000000..76681f45bb3 --- /dev/null +++ b/tests/ui/pattern/rfc-3637-guard-patterns/macro-rules.rs @@ -0,0 +1,20 @@ +//@ run-pass +//! Tests that the addition of guard patterns does not change the behavior of the `pat` macro +//! fragment. +#![feature(guard_patterns)] +#![allow(incomplete_features)] + +macro_rules! has_guard { + ($p:pat) => { + false + }; + ($p:pat if $e:expr) => { + true + }; +} + +fn main() { + assert_eq!(has_guard!(Some(_)), false); + assert_eq!(has_guard!(Some(_) if true), true); + assert_eq!(has_guard!((Some(_) if true)), false); +} |
