Skip to content

Commit f02bd99

Browse files
committed
---
yaml --- r: 34505 b: refs/heads/snap-stage3 c: 4209522 h: refs/heads/master i: 34503: 295c724 v: v3
1 parent f319540 commit f02bd99

File tree

3 files changed

+8
-15
lines changed

3 files changed

+8
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 0274292bed1c1a109cc46d49e4ac685d10b43bb3
4+
refs/heads/snap-stage3: 42095221f496a4df47c3aee502a3509d969d268e
55
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/librustc/middle/ty.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export re_bound, re_free, re_scope, re_static, re_infer;
151151
export ReVar, ReSkolemized;
152152
export br_self, br_anon, br_named, br_cap_avoid, br_fresh;
153153
export get, type_has_params, type_needs_infer, type_has_regions;
154-
export type_is_region_ptr;
154+
export type_contains_err, type_is_region_ptr;
155155
export type_id;
156156
export tbox_has_flag;
157157
export ty_var_id;
@@ -475,6 +475,7 @@ enum tbox_flag {
475475
has_self = 2,
476476
needs_infer = 4,
477477
has_regions = 8,
478+
has_ty_err = 16,
478479

479480
// a meta-flag: subst may be required if the type has parameters, a self
480481
// type, or references bound regions
@@ -508,6 +509,7 @@ pure fn type_has_params(t: t) -> bool { tbox_has_flag(get(t), has_params) }
508509
pure fn type_has_self(t: t) -> bool { tbox_has_flag(get(t), has_self) }
509510
pure fn type_needs_infer(t: t) -> bool { tbox_has_flag(get(t), needs_infer) }
510511
pure fn type_has_regions(t: t) -> bool { tbox_has_flag(get(t), has_regions) }
512+
pure fn type_contains_err(t: t) -> bool { tbox_has_flag(get(t), has_ty_err) }
511513
pure fn type_def_id(t: t) -> Option<ast::def_id> { get(t).o_def_id }
512514
pure fn type_id(t: t) -> uint { get(t).id }
513515

@@ -1059,7 +1061,8 @@ fn mk_t_with_id(cx: ctxt, +st: sty, o_def_id: Option<ast::def_id>) -> t {
10591061
}
10601062
&ty_nil | &ty_bot | &ty_bool | &ty_int(_) | &ty_float(_) | &ty_uint(_) |
10611063
&ty_estr(_) | &ty_type | &ty_opaque_closure_ptr(_) |
1062-
&ty_opaque_box | &ty_err => (),
1064+
&ty_opaque_box => (),
1065+
&ty_err => flags |= has_ty_err as uint,
10631066
&ty_param(_) => flags |= has_params as uint,
10641067
&ty_infer(_) => flags |= needs_infer as uint,
10651068
&ty_self => flags |= has_self as uint,

branches/snap-stage3/src/librustc/middle/typeck/infer/mod.rs

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -744,20 +744,10 @@ impl @InferCtxt {
744744
fn type_error_message(sp: span, mk_msg: fn(~str) -> ~str,
745745
actual_ty: ty::t, err: Option<&ty::type_err>) {
746746
let actual_ty = self.resolve_type_vars_if_possible(actual_ty);
747-
let mut actual_sty = ty::get(copy actual_ty);
748747

749748
// Don't report an error if actual type is ty_err.
750-
match actual_sty.sty {
751-
ty::ty_err => return,
752-
// Should really not report an error if the type
753-
// has ty_err anywhere as a component, but that's
754-
// annoying since we haven't written a visitor for
755-
// ty::t yet
756-
ty::ty_fn(ref fty) => match ty::get(fty.sig.output).sty {
757-
ty::ty_err => return,
758-
_ => ()
759-
},
760-
_ => ()
749+
if ty::type_contains_err(actual_ty) {
750+
return;
761751
}
762752
let error_str = err.map_default(~"", |t_err|
763753
fmt!(" (%s)",

0 commit comments

Comments
 (0)