//@ check-pass | |
#![allow(dead_code)] | |
//@ pretty-expanded FIXME #23616 | |
pub trait Borrow<Borrowed: ?Sized> { | |
fn borrow(&self) -> &Borrowed; | |
} | |
impl<T: Sized> Borrow<T> for T { | |
fn borrow(&self) -> &T { self } | |
} | |
trait Foo { | |
fn foo(&self, other: &Self); | |
} | |
fn bar<K, Q>(k: &K, q: &Q) where K: Borrow<Q>, Q: Foo { | |
q.foo(k.borrow()) | |
} | |
struct MyTree<K>(K); | |
impl<K> MyTree<K> { | |
// This caused a failure in #18906 | |
fn bar<Q>(k: &K, q: &Q) where K: Borrow<Q>, Q: Foo { | |
q.foo(k.borrow()) | |
} | |
} | |
fn main() {} |