about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-05-06 05:17:36 -0400
committerNiko Matsakis <niko@alum.mit.edu>2013-05-06 05:17:36 -0400
commit4dc62dfcf35bda8c8edf424c6c50f8584f554217 (patch)
tree4a9b519b733bfe6b7d533ea6c5a52b95bf6fa870 /src
parent7b36e34c89372b4a159d4ad565ce11d412fbea04 (diff)
downloadrust-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.rs12
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();
 }