File tree Expand file tree Collapse file tree 3 files changed +86
-0
lines changed Expand file tree Collapse file tree 3 files changed +86
-0
lines changed Original file line number Diff line number Diff line change 1+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // Test calling methods on an impl for a bare trait. This test checks that the
12+ // trait impl is only applied to a trait object, not concrete types which implement
13+ // the trait.
14+
15+ trait T { }
16+
17+ impl < ' a > T +' a {
18+ fn foo ( & self ) { }
19+ }
20+
21+ impl T for int { }
22+
23+ fn main ( ) {
24+ let x = & 42 i;
25+ x. foo ( ) ; //~ERROR: type `&int` does not implement any method in scope named `foo`
26+ }
Original file line number Diff line number Diff line change 1+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // Test calling methods on an impl for a bare trait. This test checks trait impls
12+ // must be in the same module as the trait.
13+
14+ mod Foo {
15+ trait T { }
16+ }
17+
18+ mod Bar {
19+ impl < ' a > :: Foo :: T +' a { //~ERROR: inherent implementations may only be implemented in the same
20+ fn foo ( & self ) { }
21+ }
22+ }
23+
24+ fn main ( ) { }
Original file line number Diff line number Diff line change 1+ // Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+ // file at the top-level directory of this distribution and at
3+ // http://rust-lang.org/COPYRIGHT.
4+ //
5+ // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+ // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+ // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+ // option. This file may not be copied, modified, or distributed
9+ // except according to those terms.
10+
11+ // Test calling methods on an impl for a bare trait.
12+
13+ static mut COUNT : uint = 1 ;
14+
15+ trait T { }
16+
17+ impl < ' a > T +' a {
18+ fn foo ( & self ) {
19+ unsafe { COUNT *= 2 ; }
20+ }
21+ fn bar ( ) {
22+ unsafe { COUNT *= 3 ; }
23+ }
24+ }
25+
26+ impl T for int { }
27+
28+ fn main ( ) {
29+ let x: & T = & 42 i;
30+
31+ x. foo ( ) ;
32+ T :: foo ( x) ;
33+ T :: bar ( ) ;
34+
35+ unsafe { assert ! ( COUNT == 12 ) ; }
36+ }
You can’t perform that action at this time.
0 commit comments