//@ run-pass
#![feature(arbitrary_self_types)]
struct Foo;
struct Bar;
impl std::ops::Deref for Bar {
type Target = Foo;
fn deref(&self) -> &Foo {
&Foo
}
impl Foo {
fn bar(self: Bar) -> i32 { 3 }
fn main() {
assert_eq!(3, Bar.bar());