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