port codemap to use dvec

This commit is contained in:
Niko Matsakis 2012-05-15 13:40:18 -07:00
parent de1513f26a
commit 7905b79156
2 changed files with 8 additions and 5 deletions

View file

@ -1,3 +1,5 @@
import dvec::{dvec, extensions};
export filename;
export filemap;
export span;
@ -42,11 +44,11 @@ type filemap =
@{name: filename, substr: file_substr, src: @str,
start_pos: file_pos, mut lines: [file_pos]};
type codemap = @{mut files: [filemap]};
type codemap = @{files: dvec<filemap>};
type loc = {file: filemap, line: uint, col: uint};
fn new_codemap() -> codemap { @{mut files: [] } }
fn new_codemap() -> codemap { @{files: dvec()} }
fn new_filemap_w_substr(filename: filename, substr: file_substr,
src: @str,
@ -79,7 +81,7 @@ type lookup_fn = fn@(file_pos) -> uint;
fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
-> {fm: filemap, line: uint}
{
let len = vec::len(map.files);
let len = map.files.len();
let mut a = 0u;
let mut b = len;
while b - a > 1u {

View file

@ -1,4 +1,5 @@
#[doc = "The main parser interface"];
import dvec::extensions;
export parse_sess;
export next_node_id;
@ -152,7 +153,7 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
let ftype = parser::SOURCE_FILE;
let filemap = codemap::new_filemap_w_substr
(name, ss, source, sess.chpos, sess.byte_pos);
sess.cm.files += [filemap];
sess.cm.files.push(filemap);
let itr = @interner::mk(str::hash, str::eq);
let rdr = lexer::new_reader(sess.span_diagnostic,
filemap, itr);
@ -173,7 +174,7 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
};
let filemap = codemap::new_filemap(path, src,
sess.chpos, sess.byte_pos);
sess.cm.files += [filemap];
sess.cm.files.push(filemap);
let itr = @interner::mk(str::hash, str::eq);
let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr);
ret new_parser(sess, cfg, rdr, ftype);