about summary refs log tree commit diff
path: root/src/comp/driver
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-10-28 21:19:59 -0700
committerBrian Anderson <banderson@mozilla.com>2011-10-29 01:25:11 -0700
commit2cebef095e61608a3d35710cb5fd3d7de18b68ac (patch)
treecb24a5d2506444d157edfe16fac08f2d31892a28 /src/comp/driver
parent2b62a80202e2855d47f20d271842e0e9aec6d8e2 (diff)
downloadrust-2cebef095e61608a3d35710cb5fd3d7de18b68ac.tar.gz
rust-2cebef095e61608a3d35710cb5fd3d7de18b68ac.zip
stdlib: Make io failures recoverable by returning a result
Diffstat (limited to 'src/comp/driver')
-rw-r--r--src/comp/driver/rustc.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/comp/driver/rustc.rs b/src/comp/driver/rustc.rs
index 41b1faec8a4..650e46b3898 100644
--- a/src/comp/driver/rustc.rs
+++ b/src/comp/driver/rustc.rs
@@ -11,7 +11,7 @@ import syntax::print::{pp, pprust};
 import util::{ppaux, common, filesearch};
 import back::link;
 import lib::llvm;
-import std::{fs, option, str, vec, int, io, run, getopts};
+import std::{fs, option, str, vec, int, io, run, getopts, result};
 import std::map::mk_hashmap;
 import std::option::{some, none};
 import std::getopts::{optopt, optmulti, optflag, optflagopt, opt_present};
@@ -77,10 +77,16 @@ fn parse_input(sess: session::session, cfg: ast::crate_cfg, input: str) ->
 
 fn parse_input_src(sess: session::session, cfg: ast::crate_cfg, infile: str)
    -> {crate: @ast::crate, src: str} {
-    let srcbytes =
-        if infile != "-" {
-            io::file_reader(infile)
-        } else { io::stdin() }.read_whole_stream();
+    let srcbytes = if infile != "-" {
+        alt io::file_reader(infile) {
+          result::ok(reader) { reader }
+          result::err(e) {
+            sess.fatal(e)
+          }
+        }
+    } else {
+        io::stdin()
+    }.read_whole_stream();
     let src = str::unsafe_from_bytes(srcbytes);
     let crate =
         parser::parse_crate_from_source_str(infile, src, cfg,