| //@ build-pass (FIXME(62277): could be check-pass?) | |
| // Check that method probing ObjectCandidate works in the presence of | |
| // auto traits and/or HRTBs. | |
| mod internal { | |
| pub trait MyObject<'a> { | |
| type Output; | |
| fn foo(&self) -> Self::Output; | |
| } | |
| impl<'a> MyObject<'a> for () { | |
| type Output = &'a u32; | |
| fn foo(&self) -> Self::Output { &4 } | |
| } | |
| } | |
| fn t1(d: &dyn for<'a> internal::MyObject<'a, Output=&'a u32>) { | |
| d.foo(); | |
| } | |
| fn t2(d: &dyn internal::MyObject<'static, Output=&'static u32>) { | |
| d.foo(); | |
| } | |
| fn t3(d: &(dyn for<'a> internal::MyObject<'a, Output=&'a u32> + Sync)) { | |
| d.foo(); | |
| } | |
| fn t4(d: &(dyn internal::MyObject<'static, Output=&'static u32> + Sync)) { | |
| d.foo(); | |
| } | |
| fn main() { | |
| t1(&()); | |
| t2(&()); | |
| t3(&()); | |
| t4(&()); | |
| } |