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:
parent
8d26c75043
commit
0ceb30de6d
3 changed files with 290 additions and 0 deletions
41
src/test/ui/methods/method-trait-object-with-hrtb.rs
Normal file
41
src/test/ui/methods/method-trait-object-with-hrtb.rs
Normal 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(&());
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue