Call the correct type formatting function for more typecheck diagnostics. Closes #2652.

This commit is contained in:
Michael Sullivan 2012-06-20 15:44:37 -07:00
parent 60a658250e
commit 8040fd86bf
2 changed files with 14 additions and 10 deletions

View File

@ -1334,7 +1334,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
tcx.sess.span_fatal( tcx.sess.span_fatal(
expr.span, #fmt("a loop function's last argument \ expr.span, #fmt("a loop function's last argument \
should return `bool`, not `%s`", should return `bool`, not `%s`",
ty_to_str(tcx, fty.output))); fcx.infcx.ty_to_str(fty.output)));
} }
} }
(ty::mk_fn(tcx, {output: ty::mk_nil(tcx) with fty}), fty.proto) (ty::mk_fn(tcx, {output: ty::mk_nil(tcx) with fty}), fty.proto)
@ -1471,12 +1471,12 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
_ { _ {
if ty::type_is_nil(t_e) { if ty::type_is_nil(t_e) {
tcx.sess.span_err(expr.span, "cast from nil: " + tcx.sess.span_err(expr.span, "cast from nil: " +
ty_to_str(tcx, t_e) + " as " + fcx.infcx.ty_to_str(t_e) + " as " +
ty_to_str(tcx, t_1)); fcx.infcx.ty_to_str(t_1));
} else if ty::type_is_nil(t_1) { } else if ty::type_is_nil(t_1) {
tcx.sess.span_err(expr.span, "cast to nil: " + tcx.sess.span_err(expr.span, "cast to nil: " +
ty_to_str(tcx, t_e) + " as " + fcx.infcx.ty_to_str(t_e) + " as " +
ty_to_str(tcx, t_1)); fcx.infcx.ty_to_str(t_1));
} }
let t_1_is_scalar = type_is_scalar(fcx, expr.span, t_1); let t_1_is_scalar = type_is_scalar(fcx, expr.span, t_1);
@ -1490,8 +1490,8 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
*/ */
tcx.sess.span_err(expr.span, tcx.sess.span_err(expr.span,
"non-scalar cast: " + "non-scalar cast: " +
ty_to_str(tcx, t_e) + " as " + fcx.infcx.ty_to_str(t_e) + " as " +
ty_to_str(tcx, t_1)); fcx.infcx.ty_to_str(t_1));
} }
} }
} }
@ -1639,7 +1639,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
let t_err = fcx.infcx.resolve_type_vars_if_possible(expr_t); let t_err = fcx.infcx.resolve_type_vars_if_possible(expr_t);
let msg = #fmt["attempted access of field %s on type %s, but \ let msg = #fmt["attempted access of field %s on type %s, but \
no public field or method with that name was found", no public field or method with that name was found",
*field, ty_to_str(tcx, t_err)]; *field, fcx.infcx.ty_to_str(t_err)];
tcx.sess.span_err(expr.span, msg); tcx.sess.span_err(expr.span, msg);
// NB: Adding a bogus type to allow typechecking to continue // NB: Adding a bogus type to allow typechecking to continue
fcx.write_ty(id, fcx.infcx.next_ty_var()); fcx.write_ty(id, fcx.infcx.next_ty_var());
@ -1667,7 +1667,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
_ { _ {
tcx.sess.span_fatal( tcx.sess.span_fatal(
expr.span, "cannot index a value of type `" + expr.span, "cannot index a value of type `" +
ty_to_str(tcx, base_t) + "`"); fcx.infcx.ty_to_str(base_t) + "`");
} }
} }
} }
@ -1708,7 +1708,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt,
none { none {
let t_err = fcx.infcx.resolve_type_vars_if_possible(p_ty); let t_err = fcx.infcx.resolve_type_vars_if_possible(p_ty);
let msg = #fmt["no `alloc()` method found for type `%s`", let msg = #fmt["no `alloc()` method found for type `%s`",
ty_to_str(tcx, t_err)]; fcx.infcx.ty_to_str(t_err)];
tcx.sess.span_err(expr.span, msg); tcx.sess.span_err(expr.span, msg);
} }
} }

View File

@ -0,0 +1,4 @@
fn main() {
let z = ();
log(error, z[0]); //! ERROR cannot index a value of type `()`
}