about summary refs log tree commit diff
path: root/src/librustsyntax/parse.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustsyntax/parse.rs')
-rw-r--r--src/librustsyntax/parse.rs27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/librustsyntax/parse.rs b/src/librustsyntax/parse.rs
index d735af6d117..d1a997187da 100644
--- a/src/librustsyntax/parse.rs
+++ b/src/librustsyntax/parse.rs
@@ -73,22 +73,20 @@ fn parse_crate_from_source_file(input: str, cfg: ast::crate_cfg,
     ret r;
 }
 
-fn parse_crate_from_source_str(name: str, source: ~str,
-               cfg: ast::crate_cfg, sess: parse_sess) -> @ast::crate {
-  // FIXME: Get rid of copy once there's a snapshot
+fn parse_crate_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
+                               sess: parse_sess) -> @ast::crate {
     let p = new_parser_from_source_str(
-           sess, cfg, name, codemap::fss_none, @(*source));
+        sess, cfg, name, codemap::fss_none, source);
     let r = parser::parse_crate_mod(p, cfg);
     sess.chpos = p.reader.chpos;
     sess.byte_pos = sess.byte_pos + p.reader.pos;
     ret r;
 }
 
-fn parse_expr_from_source_str(name: str, source: ~str,
-               cfg: ast::crate_cfg, sess: parse_sess) -> @ast::expr {
-  // FIXME: Get rid of copy once there's a snapshot
+fn parse_expr_from_source_str(name: str, source: @str, cfg: ast::crate_cfg,
+                              sess: parse_sess) -> @ast::expr {
     let p = new_parser_from_source_str(
-        sess, cfg, name, codemap::fss_none, @(*source));
+        sess, cfg, name, codemap::fss_none, source);
     let r = parser::parse_expr(p);
     sess.chpos = p.reader.chpos;
     sess.byte_pos = sess.byte_pos + p.reader.pos;
@@ -136,15 +134,12 @@ fn new_parser(sess: parse_sess, cfg: ast::crate_cfg, rdr: lexer::reader,
       restricted_keywords: token::restricted_keyword_table()}
 }
 
-/* FIXME: still taking an @ b/c #ast using this.
- Fix when there's a snapshot */
 fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
                               name: str, ss: codemap::file_substr,
                               source: @str) -> parser {
     let ftype = parser::SOURCE_FILE;
     let filemap = codemap::new_filemap_w_substr
-      // FIXME: remove copy once there's a new snap
-      (name, ss, ~(*source), sess.chpos, sess.byte_pos);
+        (name, ss, source, sess.chpos, sess.byte_pos);
     sess.cm.files += [filemap];
     let itr = @interner::mk(str::hash, str::eq);
     let rdr = lexer::new_reader(sess.span_diagnostic,
@@ -153,10 +148,12 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
 }
 
 fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
-                        ftype: parser::file_type) -> parser {
-    let src = alt io::read_whole_file_ref(path) {
+                        ftype: parser::file_type) ->
+   parser {
+    let src = alt io::read_whole_file_str(path) {
       result::ok(src) {
-        src
+        // FIXME: This copy is unfortunate
+        @src
       }
       result::err(e) {
         sess.span_diagnostic.handler().fatal(e)