]> git.lizzy.rs Git - rust.git/commitdiff
Tweak "call this function" suggestion to have smaller span
authorEsteban Kuber <esteban@kuber.com.ar>
Fri, 3 Dec 2021 23:05:49 +0000 (23:05 +0000)
committerEsteban Kuber <esteban@kuber.com.ar>
Fri, 3 Dec 2021 23:05:49 +0000 (23:05 +0000)
compiler/rustc_typeck/src/check/op.rs
src/test/ui/fn/fn-compare-mismatch.stderr
src/test/ui/issues/issue-59488.stderr
src/test/ui/issues/issue-70724-add_type_neq_err_label-unwrap.stderr

index f83209f57a897cf54145fd76295746c45faa4e65..4956321eb5cd49ed26e897e3ef0839c76b03305b 100644 (file)
@@ -492,7 +492,6 @@ fn add_type_neq_err_label(
     ) -> 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;
             }
@@ -517,20 +516,18 @@ fn add_type_neq_err_label(
                 .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;
             }
         }
index 585f556abc8b538d31e0b011427527082fd15500..096440225b99907c57b1f73d35043c2198a12e3e 100644 (file)
@@ -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
index f739557e001f53adc9b8792ddf582e4e27eef160..47fd9fdb65472970bebb8eca51ef764796b9f287 100644 (file)
@@ -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
@@ -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
@@ -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
index cd4cc969200a6f5f6995b90001ae4bf3701fec48..4c11f3544948e694becba10e8d13aa8c0c0699f1 100644 (file)
@@ -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