Convert rustc::syntax::eval to istrs. Issue #855

This commit is contained in:
Brian Anderson 2011-08-27 00:23:12 -07:00
parent 26516dc8d2
commit 427d42228f
2 changed files with 15 additions and 14 deletions

View File

@ -20,14 +20,15 @@
type ctx =
@{p: parser,
mode: eval_mode,
mutable deps: [str],
mutable deps: [istr],
sess: parser::parse_sess,
mutable chpos: uint,
mutable byte_pos: uint,
cfg: ast::crate_cfg};
fn eval_crate_directives(cx: ctx, cdirs: &[@ast::crate_directive],
prefix: str, view_items: &mutable [@ast::view_item],
prefix: &istr,
view_items: &mutable [@ast::view_item],
items: &mutable [@ast::item]) {
for sub_cdir: @ast::crate_directive in cdirs {
eval_crate_directive(cx, sub_cdir, prefix, view_items, items);
@ -35,14 +36,14 @@ fn eval_crate_directives(cx: ctx, cdirs: &[@ast::crate_directive],
}
fn eval_crate_directives_to_mod(cx: ctx, cdirs: &[@ast::crate_directive],
prefix: str) -> ast::_mod {
prefix: &istr) -> ast::_mod {
let view_items: [@ast::view_item] = [];
let items: [@ast::item] = [];
eval_crate_directives(cx, cdirs, prefix, view_items, items);
ret {view_items: view_items, items: items};
}
fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str,
fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &istr,
view_items: &mutable [@ast::view_item],
items: &mutable [@ast::item]) {
alt cdir.node {
@ -54,15 +55,15 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str,
}
none. { }
}
let full_path = if std::fs::path_is_absolute(
file_path) {
istr::to_estr(file_path)
let full_path = if std::fs::path_is_absolute(file_path) {
file_path
} else {
prefix + istr::to_estr(std::fs::path_sep() + file_path)
prefix + std::fs::path_sep() + file_path
};
if cx.mode == mode_depend { cx.deps += [full_path]; ret; }
let p0 =
new_parser_from_file(cx.sess, cx.cfg, full_path, cx.chpos,
new_parser_from_file(cx.sess, cx.cfg,
istr::to_estr(full_path), cx.chpos,
cx.byte_pos, SOURCE_FILE);
let inner_attrs = parse_inner_attrs_and_next(p0);
let mod_attrs = attrs + inner_attrs.inner;
@ -87,9 +88,9 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str,
}
let full_path =
if std::fs::path_is_absolute(path) {
istr::to_estr(path)
path
} else {
prefix + istr::to_estr(std::fs::path_sep() + path)
prefix + std::fs::path_sep() + path
};
let m0 = eval_crate_directives_to_mod(cx, cdirs, full_path);
let i =

View File

@ -2549,13 +2549,13 @@ fn parse_crate_from_crate_file(input: &str, cfg: &ast::crate_cfg,
sess: &parse_sess) -> @ast::crate {
let p = new_parser_from_file(sess, cfg, input, 0u, 0u, CRATE_FILE);
let lo = p.get_lo_pos();
let prefix = istr::to_estr(
std::fs::dirname(istr::from_estr(p.get_filemap().name)));
let prefix =
std::fs::dirname(istr::from_estr(p.get_filemap().name));
let leading_attrs = parse_inner_attrs_and_next(p);
let crate_attrs = leading_attrs.inner;
let first_cdir_attr = leading_attrs.next;
let cdirs = parse_crate_directives(p, token::EOF, first_cdir_attr);
let deps: [str] = [];
let deps: [istr] = [];
let cx =
@{p: p,
mode: eval::mode_parse,