diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2023-04-30 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2023-04-30 20:24:10 +0200 |
| commit | b855308521a4d3c508a722e970c4de1829651232 (patch) | |
| tree | 8a694916820df1ef20d2aca47e8dfd505aab2586 | |
| parent | 831c9298c8e6542e3ab395216e98aec21f60b470 (diff) | |
| download | rust-b855308521a4d3c508a722e970c4de1829651232.tar.gz rust-b855308521a4d3c508a722e970c4de1829651232.zip | |
Test precise capture with a multi-variant enum and exhaustive patterns
Add test checking that it is possible to capture fields of a multi-variant enum, when remaining variants are visibly uninhabited (under the `exhaustive_patterns` feature gate).
| -rw-r--r-- | tests/ui/closures/2229_closure_analysis/run_pass/multivariant.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/ui/closures/2229_closure_analysis/run_pass/multivariant.rs b/tests/ui/closures/2229_closure_analysis/run_pass/multivariant.rs new file mode 100644 index 00000000000..72652ef6034 --- /dev/null +++ b/tests/ui/closures/2229_closure_analysis/run_pass/multivariant.rs @@ -0,0 +1,21 @@ +// Test precise capture of a multi-variant enum (when remaining variants are +// visibly uninhabited). +// edition:2021 +// run-pass +#![feature(exhaustive_patterns)] +#![feature(never_type)] + +pub fn main() { + let mut r = Result::<!, (u32, u32)>::Err((0, 0)); + let mut f = || { + let Err((ref mut a, _)) = r; + *a = 1; + }; + let mut g = || { + let Err((_, ref mut b)) = r; + *b = 2; + }; + f(); + g(); + assert_eq!(r, Err((1, 2))); +} |
