Skip to content

Commit

Permalink
Rollup merge of #71710 - workingjubilee:jubilee-readd-test, r=nikomat…
Browse files Browse the repository at this point in the history
…sakis

Test for zero-sized function items not ICEing

Closes #30276.
Again.
Please give rustcake with no icing!
  • Loading branch information
Dylan-DPC committed May 8, 2020
2 parents 807e8b8 + cd4c309 commit a9eb01a
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/test/ui/unsized-locals/issue-30276-feature-flagged.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#![feature(unsized_locals)]

struct Test([i32]);

fn main() {
let _x: fn(_) -> Test = Test;
} //~^the size for values of type `[i32]` cannot be known at compilation time
14 changes: 14 additions & 0 deletions src/test/ui/unsized-locals/issue-30276-feature-flagged.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0277]: the size for values of type `[i32]` cannot be known at compilation time
--> $DIR/issue-30276-feature-flagged.rs:6:29
|
LL | let _x: fn(_) -> Test = Test;
| ^^^^ doesn't have a size known at compile-time
|
= help: within `Test`, the trait `std::marker::Sized` is not implemented for `[i32]`
= note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
= note: required because it appears within the type `Test`
= note: the return type of a function must have a statically known size

error: aborting due to previous error

For more information about this error, try `rustc --explain E0277`.
5 changes: 5 additions & 0 deletions src/test/ui/unsized-locals/issue-30276.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
struct Test([i32]);

fn main() {
let _x: fn(_) -> Test = Test;
} //~^the size for values of type `[i32]` cannot be known at compilation time
14 changes: 14 additions & 0 deletions src/test/ui/unsized-locals/issue-30276.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0277]: the size for values of type `[i32]` cannot be known at compilation time
--> $DIR/issue-30276.rs:4:29
|
LL | let _x: fn(_) -> Test = Test;
| ^^^^ doesn't have a size known at compile-time
|
= help: the trait `std::marker::Sized` is not implemented for `[i32]`
= note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
= note: all function arguments must have a statically known size
= help: unsized locals are gated as an unstable feature

error: aborting due to previous error

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

0 comments on commit a9eb01a

Please sign in to comment.