summaryrefslogtreecommitdiffstats
path: root/tests/ui/closures/2229_closure_analysis/issue-89606.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /tests/ui/closures/2229_closure_analysis/issue-89606.rs
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/ui/closures/2229_closure_analysis/issue-89606.rs')
-rw-r--r--tests/ui/closures/2229_closure_analysis/issue-89606.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/ui/closures/2229_closure_analysis/issue-89606.rs b/tests/ui/closures/2229_closure_analysis/issue-89606.rs
new file mode 100644
index 000000000..1bb6aa40f
--- /dev/null
+++ b/tests/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);
+}