Add a note when trying to call a non-function

The note added tells the definition location of the non-function
that is being called. Fixes #10969
This commit is contained in:
Antti Keränen 2015-11-23 16:48:55 +02:00
parent 4891c00634
commit 428e790d8c

View 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.