Skip to content

Commit 4ffff66

Browse files
committed
Fix vector syntax in error messages
1 parent cec1f38 commit 4ffff66

File tree

4 files changed

+16
-9
lines changed

4 files changed

+16
-9
lines changed

src/librustc/middle/typeck/infer/mod.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -733,10 +733,10 @@ impl @mut InferCtxt {
733733

734734
fn report_mismatched_types(sp: span, e: ty::t, a: ty::t,
735735
err: &ty::type_err) {
736-
// Don't report an error if expected is ty_err
737736
let resolved_expected =
738737
self.resolve_type_vars_if_possible(e);
739738
let mk_msg = match ty::get(resolved_expected).sty {
739+
// Don't report an error if expected is ty_err
740740
ty::ty_err => return,
741741
_ => {
742742
// if I leave out : ~str, it infers &str and complains
@@ -779,4 +779,3 @@ impl @mut InferCtxt {
779779
}
780780

781781
}
782-

src/librustc/util/ppaux.rs

+8-6
Original file line numberDiff line numberDiff line change
@@ -238,19 +238,21 @@ pub fn vstore_to_str(cx: ctxt, vs: ty::vstore) -> ~str {
238238
ty::vstore_fixed(n) => fmt!("%u", n),
239239
ty::vstore_uniq => ~"~",
240240
ty::vstore_box => ~"@",
241+
/* FIXME(#4517) slice fmt */
241242
ty::vstore_slice(r) => region_to_str(cx, r)
242243
}
243244
}
244245

245246
pub fn vstore_ty_to_str(cx: ctxt, ty: ~str, vs: ty::vstore) -> ~str {
246247
match vs {
247248
ty::vstore_fixed(_) => {
248-
fmt!("%s/%s", ty, vstore_to_str(cx, vs))
249+
fmt!("[%s * %s]", ty, vstore_to_str(cx, vs))
249250
}
251+
/* FIXME(#4517) slice fmt */
250252
ty::vstore_slice(_) => {
251253
fmt!("%s/%s", vstore_to_str(cx, vs), ty)
252254
}
253-
_ => fmt!("%s%s", vstore_to_str(cx, vs), ty)
255+
_ => fmt!("%s[%s]", vstore_to_str(cx, vs), ty)
254256
}
255257
}
256258

@@ -453,13 +455,13 @@ pub fn ty_to_str(cx: ctxt, typ: t) -> ~str {
453455
ty_trait(did, ref substs, vs) => {
454456
let path = ty::item_path(cx, did);
455457
let base = ast_map::path_to_str(path, cx.sess.intr());
456-
let result = parameterized(cx, base, substs.self_r, substs.tps);
457-
vstore_ty_to_str(cx, result, vs)
458+
let ty = parameterized(cx, base, substs.self_r, substs.tps);
459+
fmt!("%s%s", vstore_to_str(cx, vs), ty)
458460
}
459461
ty_evec(mt, vs) => {
460-
vstore_ty_to_str(cx, fmt!("[%s]", mt_to_str(cx, mt)), vs)
462+
vstore_ty_to_str(cx, fmt!("%s", mt_to_str(cx, mt)), vs)
461463
}
462-
ty_estr(vs) => vstore_ty_to_str(cx, ~"str", vs),
464+
ty_estr(vs) => fmt!("%s%s", vstore_to_str(cx, vs), ~"str"),
463465
ty_opaque_box => ~"@?",
464466
ty_opaque_closure_ptr(ast::BorrowedSigil) => ~"closure&",
465467
ty_opaque_closure_ptr(ast::ManagedSigil) => ~"closure@",

src/test/compile-fail/issue-2149.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ impl<A> vec_monad<A> for ~[A] {
2222
}
2323
fn main() {
2424
["hi"].bind(|x| [x] );
25-
//~^ ERROR type `[&static/str]/1` does not implement any method in scope named `bind`
25+
//~^ ERROR type `[&staticstr * 1]` does not implement any method in scope named `bind`
2626
//~^^ ERROR Unconstrained region variable
2727
}

src/test/compile-fail/issue-4517.rs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
fn bar(int_param: int) {}
2+
3+
fn main() {
4+
let foo: [u8 * 4] = [1u8, ..4u8];
5+
bar(foo); //~ ERROR mismatched types: expected `int` but found `[u8 * 4]` (expected int but found vector)
6+
}

0 commit comments

Comments
 (0)