port codemap to use dvec
This commit is contained in:
parent
de1513f26a
commit
7905b79156
2 changed files with 8 additions and 5 deletions
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue