Rollup merge of #71952 - JohnTitor:add-tests, r=Dylan-DPC

Add some regression tests

Closes #29988
Closes #34979
Pick up two snippets that have been fixed from #67945 (shouldn't be closed yet!)
This commit is contained in:
Dylan DPC 2020-05-07 17:58:53 +02:00 committed by GitHub
commit 480f718158
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 107 additions and 0 deletions

View file

@ -0,0 +1,25 @@
// Regression test for #29988
// compile-flags: -C no-prepopulate-passes
// only-x86_64
// ignore-windows
#[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);
}
}

View file

@ -0,0 +1,8 @@
enum Bug<S> {
Var = {
let x: S = 0; //~ ERROR: mismatched types
0
},
}
fn main() {}

View file

@ -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`.

View file

@ -0,0 +1,9 @@
#![feature(type_ascription)]
enum Bug<S> {
Var = 0: S,
//~^ ERROR: mismatched types
//~| ERROR: mismatched types
}
fn main() {}

View file

@ -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`.

View file

@ -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() {}

View file

@ -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`.