about summary refs log tree commit diff
path: root/tests/ui/issues/issue-9719.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-9719.rs')
-rw-r--r--tests/ui/issues/issue-9719.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-9719.rs b/tests/ui/issues/issue-9719.rs
new file mode 100644
index 00000000000..e8c3c9c194a
--- /dev/null
+++ b/tests/ui/issues/issue-9719.rs
@@ -0,0 +1,41 @@
+// build-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+mod a {
+    pub enum Enum<T> {
+        A(T),
+    }
+
+    pub trait X {
+        fn dummy(&self) { }
+    }
+    impl X for isize {}
+
+    pub struct Z<'a>(Enum<&'a (dyn X + 'a)>);
+    fn foo() { let x: isize = 42; let z = Z(Enum::A(&x as &dyn X)); let _ = z; }
+}
+
+mod b {
+    trait X {
+        fn dummy(&self) { }
+    }
+    impl X for isize {}
+    struct Y<'a>{
+        x:Option<&'a (dyn X + 'a)>,
+    }
+
+    fn bar() {
+        let x: isize = 42;
+        let _y = Y { x: Some(&x as &dyn X) };
+    }
+}
+
+mod c {
+    pub trait X { fn f(&self); }
+    impl X for isize { fn f(&self) {} }
+    pub struct Z<'a>(Option<&'a (dyn X + 'a)>);
+    fn main() { let x: isize = 42; let z = Z(Some(&x as &dyn X)); let _ = z; }
+}
+
+pub fn main() {}