]> git.lizzy.rs Git - rust.git/commitdiff
Add a note when trying to call a non-function
authorAntti Keränen <detegr@gmail.com>
Mon, 23 Nov 2015 14:48:55 +0000 (16:48 +0200)
committerAntti Keränen <detegr@gmail.com>
Mon, 23 Nov 2015 14:57:09 +0000 (16:57 +0200)
The note added tells the definition location of the non-function
that is being called. Fixes #10969

src/librustc_typeck/check/callee.rs

index dcecec7007d52c2254608eaa8fe694f42d1f9c11..988d5537e5db779b253e11361e881b235ba60586 100644 (file)
@@ -231,6 +231,17 @@ fn confirm_builtin_call<'a,'tcx>(fcx: &FnCtxt<'a,'tcx>,
                 format!("expected function, found `{}`", actual)
             }, callee_ty, None);
 
+            if let hir::ExprCall(ref expr, _) = call_expr.node {
+                let tcx = fcx.tcx();
+                if let Some(pr) = tcx.def_map.borrow().get(&expr.id) {
+                    if pr.depth == 0 {
+                        if let Some(span) = tcx.map.span_if_local(pr.def_id()) {
+                            tcx.sess.span_note(span, "defined here")
+                        }
+                    }
+                }
+            }
+
             // This is the "default" function signature, used in case of error.
             // In that case, we check each argument against "error" in order to
             // set up all the node type bindings.