]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/trait-static-method-overwriting.rs
auto merge of #8564 : alexcrichton/rust/ifmt+++, r=graydon
[rust.git] / src / test / run-pass / trait-static-method-overwriting.rs
1 // xfail-fast
2
3 // Copyright 2012 The Rust Project Developers. See the COPYRIGHT
4 // file at the top-level directory of this distribution and at
5 // http://rust-lang.org/COPYRIGHT.
6 //
7 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
8 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
9 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
10 // option. This file may not be copied, modified, or distributed
11 // except according to those terms.
12
13 mod base {
14     use std::io;
15
16     pub trait HasNew<T> {
17         fn new() -> T;
18     }
19
20     pub struct Foo {
21         dummy: (),
22     }
23
24     impl ::base::HasNew<Foo> for Foo {
25         fn new() -> Foo {
26             println("Foo");
27             Foo { dummy: () }
28         }
29     }
30
31     pub struct Bar {
32         dummy: (),
33     }
34
35     impl ::base::HasNew<Bar> for Bar {
36         fn new() -> Bar {
37             io::println("Bar");
38             Bar { dummy: () }
39         }
40     }
41 }
42
43 pub fn main() {
44     let _f: base::Foo = base::HasNew::new::<base::Foo, base::Foo>();
45     let _b: base::Bar = base::HasNew::new::<base::Bar, base::Bar>();
46 }