diff options
| author | Gary Guo <gary@garyguo.net> | 2021-10-07 22:04:13 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2021-10-08 04:00:38 +0100 |
| commit | d7f8a0678012f8a0fa24609345b777af4a6a4c04 (patch) | |
| tree | 27bde408f20ea475f5cca05114d86a3f80650123 | |
| parent | 54812011600a2c19f7076c438e6eabe6a8063774 (diff) | |
| download | rust-d7f8a0678012f8a0fa24609345b777af4a6a4c04.tar.gz rust-d7f8a0678012f8a0fa24609345b777af4a6a4c04.zip | |
Add regression test
| -rw-r--r-- | src/test/ui/closures/2229_closure_analysis/issue-89606.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/test/ui/closures/2229_closure_analysis/issue-89606.rs b/src/test/ui/closures/2229_closure_analysis/issue-89606.rs new file mode 100644 index 00000000000..1bb6aa40f06 --- /dev/null +++ b/src/test/ui/closures/2229_closure_analysis/issue-89606.rs @@ -0,0 +1,40 @@ +// Regression test for #89606. Used to ICE. +// +// check-pass +// revisions: twenty_eighteen twenty_twentyone +// [twenty_eighteen]compile-flags: --edition 2018 +// [twenty_twentyone]compile-flags: --edition 2021 + +struct S<'a>(Option<&'a mut i32>); + +fn by_ref(s: &mut S<'_>) { + (|| { + let S(_o) = s; + s.0 = None; + })(); +} + +fn by_value(s: S<'_>) { + (|| { + let S(ref _o) = s; + let _g = s.0; + })(); +} + +struct V<'a>((Option<&'a mut i32>,)); + +fn nested(v: &mut V<'_>) { + (|| { + let V((_o,)) = v; + v.0 = (None, ); + })(); +} + +fn main() { + let mut s = S(None); + by_ref(&mut s); + by_value(s); + + let mut v = V((None, )); + nested(&mut v); +} |
