File tree 5 files changed +130
-0
lines changed
5 files changed +130
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Copyright 2017 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 that llvm generates `memcpy` for moving a value
12
+ // inside a function and moving an argument.
13
+
14
+ struct Foo {
15
+ x : Vec < i32 > ,
16
+ }
17
+
18
+ #[ inline( never) ]
19
+ #[ no_mangle]
20
+ // CHECK: memcpy
21
+ fn interior ( x : Vec < i32 > ) -> Vec < i32 > {
22
+ let Foo { x } = Foo { x : x } ;
23
+ x
24
+ }
25
+
26
+ #[ inline( never) ]
27
+ #[ no_mangle]
28
+ // CHECK: memcpy
29
+ fn exterior ( x : Vec < i32 > ) -> Vec < i32 > {
30
+ x
31
+ }
32
+
33
+ fn main ( ) {
34
+ let x = interior ( Vec :: new ( ) ) ;
35
+ println ! ( "{:?}" , x) ;
36
+
37
+ let x = exterior ( Vec :: new ( ) ) ;
38
+ println ! ( "{:?}" , x) ;
39
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 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 that name clashes between the method in an impl for the type
12
+ // and the method in the trait when both are in the same scope.
13
+
14
+ trait T {
15
+ fn foo ( & self ) ;
16
+ }
17
+
18
+ impl < ' a > T + ' a {
19
+ fn foo ( & self ) { }
20
+ }
21
+
22
+ impl T for i32 {
23
+ fn foo ( & self ) { }
24
+ }
25
+
26
+ fn main ( ) {
27
+ let x: & T = & 0i32 ;
28
+ x. foo ( ) ; //~ ERROR multiple applicable items in scope [E0034]
29
+ }
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 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
+ struct Table {
12
+ rows : [ [ String ] ] ,
13
+ //~^ ERROR the trait bound `[std::string::String]: std::marker::Sized` is not satisfied [E0277]
14
+ }
15
+
16
+ fn f ( table : & Table ) -> & [ String ] {
17
+ & table. rows [ 0 ]
18
+ }
19
+
20
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 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 that methods in trait impls should override default methods.
12
+
13
+ trait T {
14
+ fn foo ( & self ) -> i32 { 0 }
15
+ }
16
+
17
+ impl < ' a > T + ' a {
18
+ fn foo ( & self ) -> i32 { 1 }
19
+ }
20
+
21
+ fn main ( ) { }
Original file line number Diff line number Diff line change
1
+ // Copyright 2017 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 that we do not ICE when pattern matching an array against a slice.
12
+
13
+ #![ feature( slice_patterns) ]
14
+
15
+ fn main ( ) {
16
+ match "foo" . as_bytes ( ) {
17
+ b"food" => ( ) ,
18
+ & [ b'f' , ..] => ( ) ,
19
+ _ => ( )
20
+ }
21
+ }
You can’t perform that action at this time.
0 commit comments