diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2013-05-06 05:17:36 -0400 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2013-05-06 05:17:36 -0400 |
| commit | 4dc62dfcf35bda8c8edf424c6c50f8584f554217 (patch) | |
| tree | 4a9b519b733bfe6b7d533ea6c5a52b95bf6fa870 /src | |
| parent | 7b36e34c89372b4a159d4ad565ce11d412fbea04 (diff) | |
| download | rust-4dc62dfcf35bda8c8edf424c6c50f8584f554217.tar.gz rust-4dc62dfcf35bda8c8edf424c6c50f8584f554217.zip | |
do not run regionck if there have been type errors
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/middle/typeck/check/regionck.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs index 36606ab7d89..b4a1cab7b21 100644 --- a/src/librustc/middle/typeck/check/regionck.rs +++ b/src/librustc/middle/typeck/check/regionck.rs @@ -138,15 +138,19 @@ pub impl Rcx { pub fn regionck_expr(fcx: @mut FnCtxt, e: @ast::expr) { let rcx = @mut Rcx { fcx: fcx, errors_reported: 0 }; - let v = regionck_visitor(); - (v.visit_expr)(e, rcx, v); + if !fcx.tcx().sess.has_errors() { // regionck assumes typeck succeeded + let v = regionck_visitor(); + (v.visit_expr)(e, rcx, v); + } fcx.infcx().resolve_regions(); } pub fn regionck_fn(fcx: @mut FnCtxt, blk: &ast::blk) { let rcx = @mut Rcx { fcx: fcx, errors_reported: 0 }; - let v = regionck_visitor(); - (v.visit_block)(blk, rcx, v); + if !fcx.tcx().sess.has_errors() { // regionck assumes typeck succeeded + let v = regionck_visitor(); + (v.visit_block)(blk, rcx, v); + } fcx.infcx().resolve_regions(); } |
