Merge pull request #1385 from Lenny222/quotes

Use singlequotes in the typechecker error messages too, to distinguish code and English
This commit is contained in:
Graydon Hoare 2011-12-28 13:08:28 -08:00
commit f2c88c1b80
15 changed files with 49 additions and 46 deletions

View File

@ -369,7 +369,7 @@ fn ast_ty_to_ty(tcx: ty::ctxt, mode: mode, &&ast_ty: @ast::ty) -> ty::t {
alt mode {
m_check_tyvar(fcx) { ret next_ty_var(fcx); }
_ { tcx.sess.span_bug(ast_ty.span,
"found ty_infer in unexpected place"); }
"found 'ty_infer' in unexpected place"); }
}
}
}
@ -895,11 +895,12 @@ mod demand {
let e_err = resolve_type_vars_if_possible(fcx, expected);
let a_err = resolve_type_vars_if_possible(fcx, actual);
fcx.ccx.tcx.sess.span_err(sp,
"mismatched types: expected " +
"mismatched types: expected '" +
ty_to_str(fcx.ccx.tcx, e_err) +
" but found " +
ty_to_str(fcx.ccx.tcx, a_err) + " ("
+ ty::type_err_to_str(err) + ")");
"' but found '" +
ty_to_str(fcx.ccx.tcx, a_err) +
"' (" + ty::type_err_to_str(err) +
")");
ret mk_result(fcx, expected, ty_param_subst_var_ids);
}
}
@ -1302,7 +1303,7 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
// can never tell.
fcx.ccx.tcx.sess.span_fatal
(pat.span,
#fmt["mismatched types: expected %s, found tag",
#fmt["mismatched types: expected '%s' but found tag",
ty_to_str(fcx.ccx.tcx, expected)]);
}
}
@ -1314,7 +1315,8 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
ty::ty_rec(fields) { ex_fields = fields; }
_ {
fcx.ccx.tcx.sess.span_fatal
(pat.span, #fmt["mismatched types: expected %s, found record",
(pat.span,
#fmt["mismatched types: expected '%s' but found record",
ty_to_str(fcx.ccx.tcx, expected)]);
}
}
@ -1336,7 +1338,7 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
none. {
fcx.ccx.tcx.sess.span_fatal(pat.span,
#fmt["mismatched types: did not \
expect a record with a field %s",
expect a record with a field '%s'",
f.ident]);
}
}
@ -1349,8 +1351,9 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
ty::ty_tup(elts) { ex_elts = elts; }
_ {
fcx.ccx.tcx.sess.span_fatal
(pat.span, #fmt["mismatched types: expected %s, found tuple",
ty_to_str(fcx.ccx.tcx, expected)]);
(pat.span,
#fmt["mismatched types: expected '%s', found tuple",
ty_to_str(fcx.ccx.tcx, expected)]);
}
}
let e_count = vec::len(elts);
@ -1372,9 +1375,9 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
}
_ {
fcx.ccx.tcx.sess.span_fatal(pat.span,
"mismatched types: expected " +
"mismatched types: expected '" +
ty_to_str(fcx.ccx.tcx, expected) +
" found box");
"' found box");
}
}
}
@ -1386,9 +1389,9 @@ fn check_pat(fcx: @fn_ctxt, map: ast_util::pat_id_map, pat: @ast::pat,
}
_ {
fcx.ccx.tcx.sess.span_fatal(pat.span,
"mismatched types: expected " +
"mismatched types: expected '" +
ty_to_str(fcx.ccx.tcx, expected) +
" found uniq");
"' found uniq");
}
}
}
@ -1790,8 +1793,8 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
if !type_is_integral(fcx, oper.span, oper_t) &&
structure_of(fcx, oper.span, oper_t) != ty::ty_bool {
tcx.sess.span_err(expr.span,
#fmt["mismatched types: expected bool \
or integer but found %s",
#fmt["mismatched types: expected 'bool' \
or 'integer' but found '%s'",
ty_to_str(tcx, oper_t)]);
}
}
@ -1801,8 +1804,8 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
ty::type_is_fp(tcx, oper_t)) {
tcx.sess.span_err(expr.span,
"applying unary minus to \
non-numeric type "
+ ty_to_str(tcx, oper_t));
non-numeric type '"
+ ty_to_str(tcx, oper_t) + "'");
}
}
}
@ -1918,7 +1921,7 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
_ {
tcx.sess.span_fatal(expr.span,
"mismatched types: expected vector or string "
+ "but found " + ty_to_str(tcx, ety));
+ "but found '" + ty_to_str(tcx, ety) + "'");
}
}
bot |= check_for(fcx, decl, elt_ty, body, id);
@ -2249,8 +2252,8 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
if !type_is_integral(fcx, idx.span, idx_t) {
tcx.sess.span_err(idx.span,
"mismatched types: expected \
integer but found "
+ ty_to_str(tcx, idx_t));
'integer' but found '"
+ ty_to_str(tcx, idx_t) + "'");
}
alt structure_of(fcx, expr.span, base_t) {
ty::ty_vec(mt) { write::ty_only_fixup(fcx, id, mt.ty); }
@ -2687,13 +2690,13 @@ fn check_item(ccx: @crate_ctxt, it: @ast::item) {
some(m) {
if !ty::same_method(ccx.tcx, m, if_m) {
ccx.tcx.sess.span_err(
ty.span, "method " + if_m.ident +
" has the wrong type");
ty.span, "method '" + if_m.ident +
"' has the wrong type");
}
}
none. {
ccx.tcx.sess.span_err(ty.span, "missing method " +
if_m.ident);
ccx.tcx.sess.span_err(ty.span, "missing method '" +
if_m.ident + "'");
}
}
}
@ -2737,15 +2740,15 @@ fn check_main_fn_ty(tcx: ty::ctxt, main_id: ast::node_id) {
if !ok {
let span = ast_map::node_span(tcx.items.get(main_id));
tcx.sess.span_err(span,
"wrong type in main function: found " +
ty_to_str(tcx, main_t));
"wrong type in main function: found '" +
ty_to_str(tcx, main_t) + "'");
}
}
_ {
let span = ast_map::node_span(tcx.items.get(main_id));
tcx.sess.span_bug(span,
"main has a non-function type: found" +
ty_to_str(tcx, main_t));
"main has a non-function type: found '" +
ty_to_str(tcx, main_t) + "'");
}
}
}

View File

@ -1,4 +1,4 @@
// error-pattern:expected str but found int
// error-pattern:expected 'str' but found 'int'
const i: str = 10;
fn main() { log(debug, i); }

View File

@ -1,3 +1,3 @@
// error-pattern:did not expect a record with a field q
// error-pattern:did not expect a record with a field 'q'
fn main() { alt {x: 1, y: 2} { {x: x, q: q} { } } }

View File

@ -1,2 +1,2 @@
// error-pattern:expected str but found [int]
// error-pattern:expected 'str' but found '[int]'
fn main() { fail [0]; }

View File

@ -1,4 +1,4 @@
// error-pattern:mismatched types: expected fn() but found fn@()
// error-pattern:mismatched types: expected 'fn()' but found 'fn@()'
fn f() {
}
@ -6,4 +6,4 @@ fn f() {
fn main() {
// Can't produce a bare function by binding
let g: fn() = bind f();
}
}

View File

@ -1,4 +1,4 @@
// error-pattern:expected fn() but found fn(++int)
// error-pattern:expected 'fn()' but found 'fn(++int)'
fn main() {
fn f() { }

View File

@ -1,2 +1,2 @@
// error-pattern:wrong type in main function: found fn() -> char
// error-pattern:wrong type in main function: found 'fn() -> char'
fn main() -> char { }

View File

@ -1,2 +1,2 @@
// error-pattern:wrong type in main function: found fn(
// error-pattern:wrong type in main function: found 'fn(&&{x: int,y: int})'
fn main(foo: {x: int, y: int}) { }

View File

@ -1,3 +1,3 @@
// error-pattern:applying unary minus to non-numeric type str
// error-pattern:applying unary minus to non-numeric type 'str'
fn main() { -"foo"; }

View File

@ -1,4 +1,4 @@
// error-pattern:expected *Mb but found native
// error-pattern:expected '*Mb' but found 'native'
use std;
fn main() unsafe {

View File

@ -1,5 +1,5 @@
// Tests that the typechecker checks constraints
// error-pattern:mismatched types: expected uint but found u8
// error-pattern:mismatched types: expected 'uint' but found 'u8'
use std;
import uint;

View File

@ -1,4 +1,4 @@
// error-pattern:expected int but found bool
// error-pattern:expected 'int' but found 'bool'
fn main() {

View File

@ -1,4 +1,4 @@
// error-pattern: mismatched types: expected lambda(++uint) -> uint
// error-pattern: mismatched types: expected 'lambda(++uint) -> uint'
fn test(f: lambda(uint) -> uint) -> uint {
ret f(22u);
@ -7,4 +7,4 @@ fn test(f: lambda(uint) -> uint) -> uint {
fn main() {
let f = sendfn(x: uint) -> uint { ret 4u; };
log(debug, test(f));
}
}

View File

@ -1,5 +1,5 @@
// Checking that the compiler reports multiple type errors at once
// error-pattern:mismatched types: expected bool
// error-pattern:mismatched types: expected int
// error-pattern:mismatched types: expected 'bool'
// error-pattern:mismatched types: expected 'int'
fn main() { let a: bool = 1; let b: int = true; }

View File

@ -1,4 +1,4 @@
// error-pattern:expected bool but found int
// error-pattern:expected 'bool' but found 'int'
// issue #516
fn main() { let x = true; let y = 1; let z = x + y; }