File tree Expand file tree Collapse file tree 5 files changed +130
-0
lines changed Expand file tree Collapse file tree 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