about summary refs log tree commit diff
path: root/src/libsyntax/parse/mod.rs
diff options
context:
space:
mode:
authorEduard Burtescu <edy.burt@gmail.com>2015-05-14 01:44:57 +0300
committerEduard Burtescu <edy.burt@gmail.com>2015-05-14 01:47:56 +0300
commit07d4f777905a1faedaf965dac4dc37489bc625c0 (patch)
treef398dea94809078c78eabc4c3142ff355e3d729b /src/libsyntax/parse/mod.rs
parent0d50b043f748bf9a07b28a8f734327258204e26b (diff)
downloadrust-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.rs20
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