add tests to a few edge cases in method lookup

These aren't fixed by this PR, but were broken in a few older attempts
at it. Make sure they don't regress.
This commit is contained in:
Ariel Ben-Yehuda 2019-01-29 00:59:30 +02:00
parent 8d26c75043
commit 0ceb30de6d
3 changed files with 290 additions and 0 deletions

View file

@ -0,0 +1,41 @@
// compile-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(&());
}