Skip to content

Commit

Permalink
Rollup merge of rust-lang#91503 - estebank:call-fn-span, r=michaelwoe…
Browse files Browse the repository at this point in the history
…rister

Tweak "call this function" suggestion to have smaller span
  • Loading branch information
matthiaskrgr authored Dec 7, 2021
2 parents dd929ae + 93564c3 commit a8f47dc
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 21 deletions.
25 changes: 11 additions & 14 deletions compiler/rustc_typeck/src/check/op.rs
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
) -> bool /* did we suggest to call a function because of missing parentheses? */ {
err.span_label(span, ty.to_string());
if let FnDef(def_id, _) = *ty.kind() {
let source_map = self.tcx.sess.source_map();
if !self.tcx.has_typeck_results(def_id) {
return false;
}
Expand All @@ -517,20 +516,18 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
.lookup_op_method(fn_sig.output(), &[other_ty], Op::Binary(op, is_assign))
.is_ok()
{
if let Ok(snippet) = source_map.span_to_snippet(span) {
let (variable_snippet, applicability) = if !fn_sig.inputs().is_empty() {
(format!("{}( /* arguments */ )", snippet), Applicability::HasPlaceholders)
} else {
(format!("{}()", snippet), Applicability::MaybeIncorrect)
};
let (variable_snippet, applicability) = if !fn_sig.inputs().is_empty() {
("( /* arguments */ )".to_string(), Applicability::HasPlaceholders)
} else {
("()".to_string(), Applicability::MaybeIncorrect)
};

err.span_suggestion(
span,
"you might have forgotten to call this function",
variable_snippet,
applicability,
);
}
err.span_suggestion_verbose(
span.shrink_to_hi(),
"you might have forgotten to call this function",
variable_snippet,
applicability,
);
return true;
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/test/ui/fn/fn-compare-mismatch.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ LL | let x = f == g;
help: you might have forgotten to call this function
|
LL | let x = f() == g;
| ~~~
| ++
help: you might have forgotten to call this function
|
LL | let x = f == g();
| ~~~
| ++

error[E0308]: mismatched types
--> $DIR/fn-compare-mismatch.rs:4:18
Expand Down
16 changes: 12 additions & 4 deletions src/test/ui/issues/issue-59488.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ LL | foo > 12;
| --- ^ -- {integer}
| |
| fn() -> i32 {foo}
| help: you might have forgotten to call this function: `foo()`
|
help: you might have forgotten to call this function
|
LL | foo() > 12;
| ++

error[E0308]: mismatched types
--> $DIR/issue-59488.rs:14:11
Expand All @@ -23,7 +27,11 @@ LL | bar > 13;
| --- ^ -- {integer}
| |
| fn(i64) -> i64 {bar}
| help: you might have forgotten to call this function: `bar( /* arguments */ )`
|
help: you might have forgotten to call this function
|
LL | bar( /* arguments */ ) > 13;
| +++++++++++++++++++

error[E0308]: mismatched types
--> $DIR/issue-59488.rs:18:11
Expand All @@ -45,11 +53,11 @@ LL | foo > foo;
help: you might have forgotten to call this function
|
LL | foo() > foo;
| ~~~~~
| ++
help: you might have forgotten to call this function
|
LL | foo > foo();
| ~~~~~
| ++

error[E0369]: binary operation `>` cannot be applied to type `fn() -> i32 {foo}`
--> $DIR/issue-59488.rs:25:9
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@ LL | assert_eq!(a, 0);
| |
| fn() -> i32 {a}
| {integer}
| help: you might have forgotten to call this function: `*left_val()`
|
= note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info)
help: you might have forgotten to call this function
|
LL | if !(*left_val() == *right_val) {
| ++

error[E0308]: mismatched types
--> $DIR/issue-70724-add_type_neq_err_label-unwrap.rs:6:5
Expand Down

0 comments on commit a8f47dc

Please sign in to comment.