diff options
Diffstat (limited to 'src/librustsyntax/parse.rs')
| -rw-r--r-- | src/librustsyntax/parse.rs | 27 |
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) |
