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 | |
| parent | 0d50b043f748bf9a07b28a8f734327258204e26b (diff) | |
| download | rust-07d4f777905a1faedaf965dac4dc37489bc625c0.tar.gz rust-07d4f777905a1faedaf965dac4dc37489bc625c0.zip | |
syntax: abstract over the file loading mechanism.
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 20 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 5 |
2 files changed, 12 insertions, 13 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 diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index d890708d123..c9d06423a10 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -79,7 +79,6 @@ use parse::PResult; use diagnostic::FatalError; use std::collections::HashSet; -use std::fs; use std::io::prelude::*; use std::mem; use std::path::{Path, PathBuf}; @@ -4851,8 +4850,8 @@ impl<'a> Parser<'a> { let secondary_path_str = format!("{}/mod.rs", mod_name); let default_path = dir_path.join(&default_path_str[..]); let secondary_path = dir_path.join(&secondary_path_str[..]); - let default_exists = fs::metadata(&default_path).is_ok(); - let secondary_exists = fs::metadata(&secondary_path).is_ok(); + let default_exists = self.sess.codemap().file_exists(&default_path); + let secondary_exists = self.sess.codemap().file_exists(&secondary_path); if !self.owns_directory { self.span_err(id_sp, |
