about summary refs log tree commit diff
path: root/src/comp/driver
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-06-18 22:55:53 -0700
committerBrian Anderson <banderson@mozilla.com>2011-06-19 02:41:02 -0700
commit7fe9a88e31ae07f2fd89f6715efedd7e3edf49e6 (patch)
treeb779b74468ff2433da14c6f4e02994f4be2ab993 /src/comp/driver
parentc394a7f49ac29a099994e243017065de2ff97f2a (diff)
downloadrust-7fe9a88e31ae07f2fd89f6715efedd7e3edf49e6.tar.gz
rust-7fe9a88e31ae07f2fd89f6715efedd7e3edf49e6.zip
rustc: Re-introduce session.span_err, session.err
These errors are non-fatal. The session.abort_if_errors function needs to be
called at strategic points to convert the previous errors to utter failure.

Issue #440
Diffstat (limited to 'src/comp/driver')
-rw-r--r--src/comp/driver/rustc.rs2
-rw-r--r--src/comp/driver/session.rs16
2 files changed, 16 insertions, 2 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index 1094d0c7a5d..208fb5048c0 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -272,7 +272,7 @@ fn build_session(@session::options sopts) -> session::session {
     auto target_crate_num = 0;
     auto sess =
         session::session(target_crate_num, target_cfg, sopts, crate_cache,
-                         front::codemap::new_codemap());
+                         front::codemap::new_codemap(), 0u);
     ret sess;
 }
 
diff --git a/src/comp/driver/session.rs b/src/comp/driver/session.rs
index e6eefcfaa56..14b8213ce3c 100644
--- a/src/comp/driver/session.rs
+++ b/src/comp/driver/session.rs
@@ -66,7 +66,8 @@ obj session(ast::crate_num cnum,
             @config targ_cfg,
             @options opts,
             map::hashmap[int, crate_metadata] crates,
-            codemap::codemap cm) {
+            codemap::codemap cm,
+            mutable uint err_count) {
     fn get_targ_cfg() -> @config { ret targ_cfg; }
     fn get_opts() -> @options { ret opts; }
     fn get_targ_crate_num() -> ast::crate_num { ret cnum; }
@@ -80,6 +81,19 @@ obj session(ast::crate_num cnum,
         emit_diagnostic(none[span], msg, "error", 9u8, cm);
         fail;
     }
+    fn span_err(span sp, str msg) {
+        emit_diagnostic(some(sp), msg, "error", 9u8, cm);
+        err_count += 1u;
+    }
+    fn err(span sp, str msg) {
+        emit_diagnostic(some(sp), msg, "error", 9u8, cm);
+        err_count += 1u;
+    }
+    fn abort_if_errors() {
+        if (err_count > 0u) {
+            self.fatal("aborting due to previous errors");
+        }
+    }
     fn span_warn(span sp, str msg) {
         // FIXME: Use constants, but rustboot doesn't know how to export them.