Rollup merge of #86455 - tlyu:check-where-before-suggesting-unsized, r=estebank

check where-clause for explicit `Sized` before suggesting `?Sized`

Fixes #85945.

Based on #86454.

``@rustbot`` label +A-diagnostics +A-traits +A-typesystem +D-papercut +T-compiler
This commit is contained in:
Yuki Okushi 2021-11-16 15:59:38 +09:00 committed by GitHub
commit ebef3ce25b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 58 additions and 19 deletions

View file

@ -0,0 +1,8 @@
// Regression test for #85945: Don't suggest `?Sized` bound if an explicit
// `Sized` bound is already in a `where` clause.
fn foo<T>(_: &T) where T: Sized {}
fn bar() { foo(""); }
//~^ERROR the size for values of type
pub fn main() {
}

View file

@ -0,0 +1,18 @@
error[E0277]: the size for values of type `str` cannot be known at compilation time
--> $DIR/issue-85945-check-where-clause-before-suggesting-unsized.rs:4:16
|
LL | fn bar() { foo(""); }
| --- ^^ doesn't have a size known at compile-time
| |
| required by a bound introduced by this call
|
= help: the trait `Sized` is not implemented for `str`
note: required by a bound in `foo`
--> $DIR/issue-85945-check-where-clause-before-suggesting-unsized.rs:3:8
|
LL | fn foo<T>(_: &T) where T: Sized {}
| ^ required by this bound in `foo`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.