about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2022-11-10 23:54:34 +0000
committerMichael Goulet <michael@errs.io>2022-11-10 23:54:34 +0000
commit07aa5925041b415b2727cfbb0d23cc3997bd7ad7 (patch)
treef60ccab1cfa412aeff63bb8d1bc273a2146aa0fa
parenta3c0a023611fcaf5ae3ec242d7d60e356041d25f (diff)
Regression test for coercion of mut-ref to dyn-star
-rw-r--r--src/test/ui/dyn-star/issue-102430.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/dyn-star/issue-102430.rs b/src/test/ui/dyn-star/issue-102430.rs
new file mode 100644
index 00000000000..244ecda6626
--- /dev/null
+++ b/src/test/ui/dyn-star/issue-102430.rs
@@ -0,0 +1,32 @@
+// check-pass
+
+#![feature(dyn_star)]
+#![allow(incomplete_features)]
+
+trait AddOne {
+    fn add1(&mut self) -> usize;
+}
+
+impl AddOne for usize {
+    fn add1(&mut self) -> usize {
+        *self += 1;
+        *self
+    }
+}
+
+impl AddOne for &mut usize {
+    fn add1(&mut self) -> usize {
+        (*self).add1()
+    }
+}
+
+fn add_one(mut i: dyn* AddOne + '_) -> usize {
+    i.add1()
+}
+
+fn main() {
+    let mut x = 42usize;
+    let y = &mut x as (dyn* AddOne + '_);
+
+    println!("{}", add_one(y));
+}