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 filename;
|
||||||
export filemap;
|
export filemap;
|
||||||
export span;
|
export span;
|
||||||
|
@ -42,11 +44,11 @@ type filemap =
|
||||||
@{name: filename, substr: file_substr, src: @str,
|
@{name: filename, substr: file_substr, src: @str,
|
||||||
start_pos: file_pos, mut lines: [file_pos]};
|
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};
|
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,
|
fn new_filemap_w_substr(filename: filename, substr: file_substr,
|
||||||
src: @str,
|
src: @str,
|
||||||
|
@ -79,7 +81,7 @@ type lookup_fn = fn@(file_pos) -> uint;
|
||||||
fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
|
fn lookup_line(map: codemap, pos: uint, lookup: lookup_fn)
|
||||||
-> {fm: filemap, line: uint}
|
-> {fm: filemap, line: uint}
|
||||||
{
|
{
|
||||||
let len = vec::len(map.files);
|
let len = map.files.len();
|
||||||
let mut a = 0u;
|
let mut a = 0u;
|
||||||
let mut b = len;
|
let mut b = len;
|
||||||
while b - a > 1u {
|
while b - a > 1u {
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#[doc = "The main parser interface"];
|
#[doc = "The main parser interface"];
|
||||||
|
import dvec::extensions;
|
||||||
|
|
||||||
export parse_sess;
|
export parse_sess;
|
||||||
export next_node_id;
|
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 ftype = parser::SOURCE_FILE;
|
||||||
let filemap = codemap::new_filemap_w_substr
|
let filemap = codemap::new_filemap_w_substr
|
||||||
(name, ss, source, sess.chpos, sess.byte_pos);
|
(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 itr = @interner::mk(str::hash, str::eq);
|
||||||
let rdr = lexer::new_reader(sess.span_diagnostic,
|
let rdr = lexer::new_reader(sess.span_diagnostic,
|
||||||
filemap, itr);
|
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,
|
let filemap = codemap::new_filemap(path, src,
|
||||||
sess.chpos, sess.byte_pos);
|
sess.chpos, sess.byte_pos);
|
||||||
sess.cm.files += [filemap];
|
sess.cm.files.push(filemap);
|
||||||
let itr = @interner::mk(str::hash, str::eq);
|
let itr = @interner::mk(str::hash, str::eq);
|
||||||
let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr);
|
let rdr = lexer::new_reader(sess.span_diagnostic, filemap, itr);
|
||||||
ret new_parser(sess, cfg, rdr, ftype);
|
ret new_parser(sess, cfg, rdr, ftype);
|
||||||
|
|
Loading…
Reference in a new issue