Skip to content

Commit

Permalink
Rollup merge of rust-lang#71952 - JohnTitor:add-tests, r=Dylan-DPC
Browse files Browse the repository at this point in the history
Add some regression tests

Closes rust-lang#29988
Closes rust-lang#34979
Pick up two snippets that have been fixed from rust-lang#67945 (shouldn't be closed yet!)
  • Loading branch information
Dylan-DPC authored May 7, 2020
2 parents 33c5614 + f22bc7b commit 1a2e46e
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/test/codegen/ffi-out-of-bounds-loads.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// compile-flags: -C no-prepopulate-passes
// Regression test for #29988

#[repr(C)]
struct S {
f1: i32,
f2: i32,
f3: i32,
}

extern {
fn foo(s: S);
}

fn main() {
let s = S { f1: 1, f2: 2, f3: 3 };
unsafe {
// CHECK: load { i64, i32 }, { i64, i32 }* {{.*}}, align 4
// CHECK: call void @foo({ i64, i32 } {{.*}})
foo(s);
}
}
8 changes: 8 additions & 0 deletions src/test/ui/enum/issue-67945-1.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
enum Bug<S> {
Var = {
let x: S = 0; //~ ERROR: mismatched types
0
},
}

fn main() {}
17 changes: 17 additions & 0 deletions src/test/ui/enum/issue-67945-1.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
error[E0308]: mismatched types
--> $DIR/issue-67945-1.rs:3:20
|
LL | enum Bug<S> {
| - this type parameter
LL | Var = {
LL | let x: S = 0;
| - ^ expected type parameter `S`, found integer
| |
| expected due to this
|
= note: expected type parameter `S`
found type `{integer}`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
9 changes: 9 additions & 0 deletions src/test/ui/enum/issue-67945-2.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#![feature(type_ascription)]

enum Bug<S> {
Var = 0: S,
//~^ ERROR: mismatched types
//~| ERROR: mismatched types
}

fn main() {}
25 changes: 25 additions & 0 deletions src/test/ui/enum/issue-67945-2.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
error[E0308]: mismatched types
--> $DIR/issue-67945-2.rs:4:11
|
LL | enum Bug<S> {
| - this type parameter
LL | Var = 0: S,
| ^ expected type parameter `S`, found integer
|
= note: expected type parameter `S`
found type `{integer}`

error[E0308]: mismatched types
--> $DIR/issue-67945-2.rs:4:11
|
LL | enum Bug<S> {
| - this type parameter
LL | Var = 0: S,
| ^^^^ expected `isize`, found type parameter `S`
|
= note: expected type `isize`
found type parameter `S`

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0308`.
9 changes: 9 additions & 0 deletions src/test/ui/lifetimes/issue-34979.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
trait Foo {}
impl<'a, T> Foo for &'a T {}

struct Ctx<'a>(&'a ())
where
&'a (): Foo, //~ ERROR: type annotations needed
&'static (): Foo;

fn main() {}
14 changes: 14 additions & 0 deletions src/test/ui/lifetimes/issue-34979.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0283]: type annotations needed
--> $DIR/issue-34979.rs:6:13
|
LL | trait Foo {}
| --------- required by this bound in `Foo`
...
LL | &'a (): Foo,
| ^^^ cannot infer type for reference `&'a ()`
|
= note: cannot satisfy `&'a (): Foo`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0283`.

0 comments on commit 1a2e46e

Please sign in to comment.