Skip to content

Commit

Permalink
Rollup merge of rust-lang#84728 - camelid:sized-param-sugg-test, r=Ma…
Browse files Browse the repository at this point in the history
…rk-Simulacrum

Add test for suggestion to borrow unsized function parameters

Closes rust-lang#82820.

This is a regression test for rust-lang#82820.

This test case is included in more general tests, but I think the error
regressed because there were a bunch of other diagnostic changes in the
test that obscured this regression.

Hopefully, having a test specific to the suggestion, and running rustfix
for the test, will prevent this error from regressing in the future.
  • Loading branch information
Dylan-DPC authored May 6, 2021
2 parents dd3747b + a7500e5 commit 3a0d6be
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 0 deletions.
23 changes: 23 additions & 0 deletions src/test/ui/suggestions/unsized-function-parameter.fixed
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// run-rustfix

#![allow(dead_code, unused_variables)]

fn foo1(bar: &str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn foo2(_bar: &str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn foo3(_: &str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn main() {}
23 changes: 23 additions & 0 deletions src/test/ui/suggestions/unsized-function-parameter.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// run-rustfix

#![allow(dead_code, unused_variables)]

fn foo1(bar: str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn foo2(_bar: str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn foo3(_: str) {}
//~^ ERROR the size for values of type `str` cannot be known at compilation time
//~| HELP the trait `Sized` is not implemented for `str`
//~| HELP unsized fn params are gated as an unstable feature
//~| HELP function arguments must have a statically known size, borrowed types always have a known size

fn main() {}
42 changes: 42 additions & 0 deletions src/test/ui/suggestions/unsized-function-parameter.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/unsized-function-parameter.rs:5:9
|
LL | fn foo1(bar: str) {}
| ^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `str`
= help: unsized fn params are gated as an unstable feature
help: function arguments must have a statically known size, borrowed types always have a known size
|
LL | fn foo1(bar: &str) {}
| ^

error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/unsized-function-parameter.rs:11:9
|
LL | fn foo2(_bar: str) {}
| ^^^^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `str`
= help: unsized fn params are gated as an unstable feature
help: function arguments must have a statically known size, borrowed types always have a known size
|
LL | fn foo2(_bar: &str) {}
| ^

error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/unsized-function-parameter.rs:17:9
|
LL | fn foo3(_: str) {}
| ^ doesn't have a size known at compile-time
|
= help: the trait `Sized` is not implemented for `str`
= help: unsized fn params are gated as an unstable feature
help: function arguments must have a statically known size, borrowed types always have a known size
|
LL | fn foo3(_: &str) {}
| ^

error: aborting due to 3 previous errors

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

0 comments on commit 3a0d6be

Please sign in to comment.