Skip to content

Commit 7dc36e9

Browse files
committed
Add tests for issues with the 'E-needtest' label.
1 parent b04ebef commit 7dc36e9

File tree

5 files changed

+130
-0
lines changed

5 files changed

+130
-0
lines changed

src/test/codegen/issue-15953.rs

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
}

src/test/compile-fail/issue-18446.rs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
}

src/test/compile-fail/issue-22874.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
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() {}

src/test/run-pass/issue-18446.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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() {}

src/test/run-pass/issue-23311.rs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}

0 commit comments

Comments
 (0)