about summary refs log tree commit diff
path: root/tests/ui/delegation/explicit-paths-in-traits-pass.rs
blob: 7d281ad150a0370db0bfb79950bb967d8e4cc70d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//@ run-pass

#![feature(fn_delegation)]
#![allow(incomplete_features)]

trait ToReuse {
    fn foo(&self, x: i32) -> i32 { x }
    fn foo1(x: i32) -> i32 { x }
}

fn foo2() -> i32 { 42 }

trait Trait: ToReuse {
    reuse ToReuse::foo;
    reuse <Self as ToReuse>::foo1;
    reuse foo2;
}

struct S;
impl ToReuse for S {}
impl Trait for S {}

fn main() {
    assert_eq!(<S as Trait>::foo(&S, 1), 1);
    assert_eq!(<S as Trait>::foo1(1), 1);
    assert_eq!(<S as Trait>::foo2(), 42);
}