Implemented better error message for missing do statements.

This fixes #2783 for the case where an empty double pipe
symbol is being used without a do keyword.
This commit is contained in:
Armin Ronacher 2012-07-03 01:30:50 +01:00 committed by Brian Anderson
parent 1bd4e35dd8
commit 5bd9d6e05c
1 changed files with 14 additions and 0 deletions

View File

@ -973,11 +973,25 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
_ {}
}
check_expr(fcx, rhs, none);
tcx.sess.span_err(
ex.span, "binary operation " + ast_util::binop_to_str(op) +
" cannot be applied to type `" +
fcx.infcx.ty_to_str(lhs_resolved_t) +
"`");
// If the or operator is used it might be that the user forgot to
// supply the do keyword. Let's be more helpful in that situation.
if op == ast::or {
alt ty::get(lhs_resolved_t).struct {
ty::ty_fn(f) {
tcx.sess.span_note(
ex.span, "did you forget the 'do' keyword for the call?");
}
_ {}
}
}
(lhs_resolved_t, false)
}
fn check_user_unop(fcx: @fn_ctxt, op_str: str, mname: str,