diff options
Diffstat (limited to 'src/test/run-pass/trait-inheritance-simple.rs')
| -rw-r--r-- | src/test/run-pass/trait-inheritance-simple.rs | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/test/run-pass/trait-inheritance-simple.rs b/src/test/run-pass/trait-inheritance-simple.rs index fcd4cf1de6b..9725b18ca0f 100644 --- a/src/test/run-pass/trait-inheritance-simple.rs +++ b/src/test/run-pass/trait-inheritance-simple.rs @@ -1,26 +1,22 @@ -trait Foo { - fn f(); -} +trait Foo { fn f() -> int; } +trait Bar : Foo { fn g() -> int; } -trait Bar : Foo { - fn g(); -} +struct A { x: int } -struct A { - x: int -} +impl A : Foo { fn f() -> int { 10 } } +impl A : Bar { fn g() -> int { 20 } } -impl A : Bar { - fn g() { io::println("in g"); } - fn f() { io::println("in f"); } +fn ff<T:Foo>(a: &T) -> int { + a.f() } -fn h<T:Foo>(a: &T) { - a.f(); +fn gg<T:Bar>(a: &T) -> int { + a.g() } fn main() { - let a = A { x: 3 }; - h(&a); + let a = &A { x: 3 }; + assert ff(a) == 10; + assert gg(a) == 20; } |
