diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-10-28 21:19:59 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-10-29 01:25:11 -0700 |
| commit | 2cebef095e61608a3d35710cb5fd3d7de18b68ac (patch) | |
| tree | cb24a5d2506444d157edfe16fac08f2d31892a28 /src/comp/driver | |
| parent | 2b62a80202e2855d47f20d271842e0e9aec6d8e2 (diff) | |
| download | rust-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.rs | 16 |
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, |
