diff options
| author | Jules Bertholet <julesbertholet@quoi.xyz> | 2023-05-23 03:01:28 -0400 |
|---|---|---|
| committer | Jules Bertholet <julesbertholet@quoi.xyz> | 2023-05-23 12:46:25 -0400 |
| commit | 5cd02eaece8cf537054960d0d6db67096e78865d (patch) | |
| tree | c82eee0279aa5e2c7b2fbe61e8cc6955d01fcd80 /tests/ui/unsized-locals | |
| parent | 8b4b20836b832e91aa605a2faf5e2a55190202c8 (diff) | |
| download | rust-5cd02eaece8cf537054960d0d6db67096e78865d.tar.gz rust-5cd02eaece8cf537054960d0d6db67096e78865d.zip | |
Always require closure parameters to be `Sized`
The `rust-call` ABI isn't compatible with `#![feature(unsized_fn_params)]`, so trying to use that feature with closures leads to an ICE (#67981). This turns that ICE into a type-check error.
Diffstat (limited to 'tests/ui/unsized-locals')
| -rw-r--r-- | tests/ui/unsized-locals/issue-67981.rs | 9 | ||||
| -rw-r--r-- | tests/ui/unsized-locals/issue-67981.stderr | 15 |
2 files changed, 24 insertions, 0 deletions
diff --git a/tests/ui/unsized-locals/issue-67981.rs b/tests/ui/unsized-locals/issue-67981.rs new file mode 100644 index 00000000000..3eb6498e9dc --- /dev/null +++ b/tests/ui/unsized-locals/issue-67981.rs @@ -0,0 +1,9 @@ +#![feature(unsized_fn_params)] + +fn main() { + let f: fn([u8]) = |_| {}; + //~^ERROR the size for values of type `[u8]` cannot be known at compilation time + let slice: Box<[u8]> = Box::new([1; 8]); + + f(*slice); +} diff --git a/tests/ui/unsized-locals/issue-67981.stderr b/tests/ui/unsized-locals/issue-67981.stderr new file mode 100644 index 00000000000..a4b179ae2fd --- /dev/null +++ b/tests/ui/unsized-locals/issue-67981.stderr @@ -0,0 +1,15 @@ +error[E0277]: the size for values of type `[u8]` cannot be known at compilation time + --> $DIR/issue-67981.rs:4:24 + | +LL | let f: fn([u8]) = |_| {}; + | ^ doesn't have a size known at compile-time + | + = help: the trait `Sized` is not implemented for `[u8]` +help: function arguments must have a statically known size, borrowed types always have a known size + | +LL | let f: fn([u8]) = |&_| {}; + | + + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0277`. |
