File tree 3 files changed +86
-0
lines changed
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