diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2015-02-24 15:22:37 +0100 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2015-02-24 15:22:37 +0100 |
| commit | 92bc3ea46770573bc734c2d0c3e7acfea020e8a7 (patch) | |
| tree | d121846591f0a0d6e6172d00f6f0414a52f707fc | |
| parent | dccdde4007c191aa8b8d9cfffb0c7d3509fa675e (diff) | |
| download | rust-92bc3ea46770573bc734c2d0c3e7acfea020e8a7.tar.gz rust-92bc3ea46770573bc734c2d0c3e7acfea020e8a7.zip | |
Avoid cat_expr note when already in error state.
Also, to ensure we do not let the dropck get skipped, ICE if cat_expr errors when *not* in error state. This is not known to be a breaking change (i.e. I do not know of a current case that causes the new ICE to be exercised).
| -rw-r--r-- | src/librustc_typeck/check/regionck.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/librustc_typeck/check/regionck.rs b/src/librustc_typeck/check/regionck.rs index f6ac1ddee49..1518a09e7dc 100644 --- a/src/librustc_typeck/check/regionck.rs +++ b/src/librustc_typeck/check/regionck.rs @@ -554,8 +554,12 @@ fn visit_expr(rcx: &mut Rcx, expr: &ast::Expr) { expr.span); } Err(..) => { - rcx.fcx.tcx().sess.span_note(expr.span, - "cat_expr_unadjusted Errd during dtor check"); + let tcx = rcx.fcx.tcx(); + if tcx.sess.has_errors() { + // cannot run dropck; okay b/c in error state anyway. + } else { + tcx.sess.span_bug(expr.span, "cat_expr_unadjusted Errd"); + } } } } @@ -571,8 +575,12 @@ fn visit_expr(rcx: &mut Rcx, expr: &ast::Expr) { check_safety_of_rvalue_destructor_if_necessary(rcx, head_cmt, expr.span); } Err(..) => { - rcx.fcx.tcx().sess.span_note(expr.span, - "cat_expr Errd during dtor check"); + let tcx = rcx.fcx.tcx(); + if tcx.sess.has_errors() { + // cannot run dropck; okay b/c in error state anyway. + } else { + tcx.sess.span_bug(expr.span, "cat_expr Errd"); + } } } |
