Skip to content

Commit

Permalink
Remove invalid suggestion involving Fn trait bound
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianWolff committed Aug 3, 2021
1 parent d5fd37f commit f8c10ff
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions src/test/ui/traits/issue-85735.rs
Original file line number Diff line number Diff line change
@@ -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() {}
16 changes: 16 additions & 0 deletions src/test/ui/traits/issue-85735.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit f8c10ff

Please sign in to comment.