| //@ 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() {} |