diff options
| author | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-14 01:44:57 +0300 |
|---|---|---|
| committer | Eduard Burtescu <edy.burt@gmail.com> | 2015-05-14 01:47:56 +0300 |
| commit | 07d4f777905a1faedaf965dac4dc37489bc625c0 (patch) | |
| tree | f398dea94809078c78eabc4c3142ff355e3d729b /src/libsyntax/parse/mod.rs | |
| parent | 0d50b043f748bf9a07b28a8f734327258204e26b (diff) | |
| download | rust-07d4f777905a1faedaf965dac4dc37489bc625c0.tar.gz rust-07d4f777905a1faedaf965dac4dc37489bc625c0.zip | |
syntax: abstract over the file loading mechanism.
Diffstat (limited to 'src/libsyntax/parse/mod.rs')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 3d27363d6ff..68574560533 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -19,7 +19,6 @@ use ptr::P; use str::char_at; use std::cell::RefCell; -use std::fs::File; use std::io::Read; use std::iter; use std::path::{Path, PathBuf}; @@ -220,17 +219,18 @@ pub fn new_parser_from_tts<'a>(sess: &'a ParseSess, /// Given a session and a path and an optional span (for error reporting), /// add the path to the session's codemap and return the new filemap. -pub fn file_to_filemap(sess: &ParseSess, path: &Path, spanopt: Option<Span>) - -> Rc<FileMap> { - let mut contents = String::new(); - if let Err(e) = File::open(path).and_then(|mut f| f.read_to_string(&mut contents)) { - let msg = format!("couldn't read {:?}: {}", path.display(), e); - match spanopt { - Some(sp) => panic!(sess.span_diagnostic.span_fatal(sp, &msg)), - None => sess.span_diagnostic.handler().fatal(&msg) +fn file_to_filemap(sess: &ParseSess, path: &Path, spanopt: Option<Span>) + -> Rc<FileMap> { + match sess.codemap().load_file(path) { + Ok(filemap) => filemap, + Err(e) => { + let msg = format!("couldn't read {:?}: {}", path.display(), e); + match spanopt { + Some(sp) => panic!(sess.span_diagnostic.span_fatal(sp, &msg)), + None => sess.span_diagnostic.handler().fatal(&msg) + } } } - sess.codemap().new_filemap(path.to_str().unwrap().to_string(), contents) } /// Given a filemap, produce a sequence of token-trees |
