Remove invalid suggestion involving Fn trait bound

This commit is contained in:
Fabian Wolff 2021-06-17 14:48:19 +02:00
parent d5fd37f00f
commit f8c10ff8b7
3 changed files with 30 additions and 0 deletions

View File

@ -1604,6 +1604,7 @@ impl<'a, 'tcx> InferCtxtPrivExt<'tcx> for InferCtxt<'a, 'tcx> {
if generics.params.iter().any(|p| p.name != kw::SelfUpper)
&& !snippet.ends_with('>')
&& !generics.has_impl_trait()
&& !self.tcx.fn_trait_kind_from_lang_item(*def_id).is_some()
{
// FIXME: To avoid spurious suggestions in functions where type arguments
// where already supplied, we check the snippet to make sure it doesn't

View File

@ -0,0 +1,13 @@
// Regression test for the invalid suggestion in #85735 (the
// underlying issue #21974 still exists here).
trait Foo {}
impl<'a, 'b, T> Foo for T
where
T: FnMut(&'a ()),
//~^ ERROR: type annotations needed [E0283]
T: FnMut(&'b ()),
{
}
fn main() {}

View File

@ -0,0 +1,16 @@
error[E0283]: type annotations needed
--> $DIR/issue-85735.rs:7:8
|
LL | T: FnMut(&'a ()),
| ^^^^^^^^^^^^^ cannot infer type for type parameter `T`
|
::: $SRC_DIR/core/src/ops/function.rs:LL:COL
|
LL | pub trait FnMut<Args>: FnOnce<Args> {
| ----------------------------------- required by this bound in `FnMut`
|
= note: cannot satisfy `T: FnMut<(&'a (),)>`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0283`.