Skip to content

Commit

Permalink
Rollup merge of rust-lang#71270 - Rustin-Liu:rustin-patch-has-self, r…
Browse files Browse the repository at this point in the history
…=estebank

Fix `has_no_input_arg` check and rename it to `has_only_self_parameter`

Signed-off-by: Rustin-Liu <rustin.liu@gmail.com>

Fixes rust-lang#70643 (comment).
  • Loading branch information
Dylan-DPC authored Apr 20, 2020
2 parents 2f06ac0 + 7c28dfe commit e80d303
Showing 1 changed file with 7 additions and 4 deletions.
11 changes: 7 additions & 4 deletions src/librustc_typeck/check/demand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
let mut methods =
self.probe_for_return_type(span, probe::Mode::MethodCall, expected, checked_ty, hir_id);
methods.retain(|m| {
self.has_no_input_arg(m)
self.has_only_self_parameter(m)
&& self
.tcx
.get_attrs(m.def_id)
Expand All @@ -243,10 +243,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
methods
}

// This function checks if the method isn't static and takes other arguments than `self`.
fn has_no_input_arg(&self, method: &AssocItem) -> bool {
/// This function checks whether the method is not static and does not accept other parameters than `self`.
fn has_only_self_parameter(&self, method: &AssocItem) -> bool {
match method.kind {
ty::AssocKind::Fn => self.tcx.fn_sig(method.def_id).inputs().skip_binder().len() == 1,
ty::AssocKind::Fn => {
method.fn_has_self_parameter
&& self.tcx.fn_sig(method.def_id).inputs().skip_binder().len() == 1
}
_ => false,
}
}
Expand Down

0 comments on commit e80d303

Please sign in to comment.