mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
rustc: Move crate directives over to interior vectors
This commit is contained in:
parent
0226f56115
commit
479ce4d783
@ -85,7 +85,7 @@ type crate_cfg = vec[@meta_item];
|
|||||||
|
|
||||||
type crate = spanned[crate_];
|
type crate = spanned[crate_];
|
||||||
|
|
||||||
type crate_ = rec(vec[@crate_directive] directives,
|
type crate_ = rec((@crate_directive)[] directives,
|
||||||
_mod module,
|
_mod module,
|
||||||
attribute[] attrs,
|
attribute[] attrs,
|
||||||
crate_cfg config);
|
crate_cfg config);
|
||||||
@ -93,7 +93,7 @@ type crate_ = rec(vec[@crate_directive] directives,
|
|||||||
tag crate_directive_ {
|
tag crate_directive_ {
|
||||||
cdir_src_mod(ident, option::t[filename], attribute[]);
|
cdir_src_mod(ident, option::t[filename], attribute[]);
|
||||||
cdir_dir_mod(ident, option::t[filename],
|
cdir_dir_mod(ident, option::t[filename],
|
||||||
vec[@crate_directive], attribute[]);
|
(@crate_directive)[], attribute[]);
|
||||||
cdir_view_item(@view_item);
|
cdir_view_item(@view_item);
|
||||||
cdir_syntax(path);
|
cdir_syntax(path);
|
||||||
cdir_auth(path, _auth);
|
cdir_auth(path, _auth);
|
||||||
|
@ -132,7 +132,7 @@ fn noop_fold_crate(&crate_ c, ast_fold fld) -> crate_ {
|
|||||||
auto fold_meta_item = bind fold_meta_item_(_,fld);
|
auto fold_meta_item = bind fold_meta_item_(_,fld);
|
||||||
auto fold_attribute = bind fold_attribute_(_,fold_meta_item);
|
auto fold_attribute = bind fold_attribute_(_,fold_meta_item);
|
||||||
|
|
||||||
ret rec(directives=vec::map(fld.fold_crate_directive, c.directives),
|
ret rec(directives=ivec::map(fld.fold_crate_directive, c.directives),
|
||||||
module=fld.fold_mod(c.module),
|
module=fld.fold_mod(c.module),
|
||||||
attrs=ivec::map(fold_attribute, c.attrs),
|
attrs=ivec::map(fold_attribute, c.attrs),
|
||||||
config=vec::map(fold_meta_item, c.config));
|
config=vec::map(fold_meta_item, c.config));
|
||||||
@ -146,7 +146,7 @@ fn noop_fold_crate_directive(&crate_directive_ cd, ast_fold fld)
|
|||||||
}
|
}
|
||||||
case(cdir_dir_mod(?id,?fname,?cds,?attrs)) {
|
case(cdir_dir_mod(?id,?fname,?cds,?attrs)) {
|
||||||
cdir_dir_mod(fld.fold_ident(id),fname,
|
cdir_dir_mod(fld.fold_ident(id),fname,
|
||||||
map(fld.fold_crate_directive, cds), attrs)
|
ivec::map(fld.fold_crate_directive, cds), attrs)
|
||||||
}
|
}
|
||||||
case(cdir_view_item(?vi)) {
|
case(cdir_view_item(?vi)) {
|
||||||
cdir_view_item(fld.fold_view_item(vi))
|
cdir_view_item(fld.fold_view_item(vi))
|
||||||
|
@ -24,7 +24,7 @@ type ctx =
|
|||||||
mutable uint chpos,
|
mutable uint chpos,
|
||||||
ast::crate_cfg cfg);
|
ast::crate_cfg cfg);
|
||||||
|
|
||||||
fn eval_crate_directives(ctx cx, vec[@ast::crate_directive] cdirs,
|
fn eval_crate_directives(ctx cx, &(@ast::crate_directive)[] cdirs,
|
||||||
str prefix, &mutable vec[@ast::view_item] view_items,
|
str prefix, &mutable vec[@ast::view_item] view_items,
|
||||||
&mutable vec[@ast::item] items) {
|
&mutable vec[@ast::item] items) {
|
||||||
for (@ast::crate_directive sub_cdir in cdirs) {
|
for (@ast::crate_directive sub_cdir in cdirs) {
|
||||||
@ -32,9 +32,8 @@ fn eval_crate_directives(ctx cx, vec[@ast::crate_directive] cdirs,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn eval_crate_directives_to_mod(ctx cx,
|
fn eval_crate_directives_to_mod(ctx cx, &(@ast::crate_directive)[] cdirs,
|
||||||
vec[@ast::crate_directive] cdirs, str prefix)
|
str prefix) -> ast::_mod {
|
||||||
-> ast::_mod {
|
|
||||||
let vec[@ast::view_item] view_items = [];
|
let vec[@ast::view_item] view_items = [];
|
||||||
let vec[@ast::item] items = [];
|
let vec[@ast::item] items = [];
|
||||||
eval_crate_directives(cx, cdirs, prefix, view_items, items);
|
eval_crate_directives(cx, cdirs, prefix, view_items, items);
|
||||||
|
@ -2337,7 +2337,7 @@ fn parse_crate_from_source_file(&str input, &ast::crate_cfg cfg,
|
|||||||
auto first_item_outer_attrs = crate_attrs._1;
|
auto first_item_outer_attrs = crate_attrs._1;
|
||||||
auto m = parse_mod_items(p, token::EOF,
|
auto m = parse_mod_items(p, token::EOF,
|
||||||
first_item_outer_attrs);
|
first_item_outer_attrs);
|
||||||
ret @spanned(lo, p.get_lo_pos(), rec(directives=[],
|
ret @spanned(lo, p.get_lo_pos(), rec(directives=~[],
|
||||||
module=m,
|
module=m,
|
||||||
attrs=crate_attrs._0,
|
attrs=crate_attrs._0,
|
||||||
config=p.get_cfg()));
|
config=p.get_cfg()));
|
||||||
@ -2419,8 +2419,8 @@ fn parse_crate_directive(&parser p, &ast::attribute[] first_outer_attr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn parse_crate_directives(&parser p, token::token term,
|
fn parse_crate_directives(&parser p, token::token term,
|
||||||
&ast::attribute[] first_outer_attr) ->
|
&ast::attribute[] first_outer_attr)
|
||||||
vec[@ast::crate_directive] {
|
-> (@ast::crate_directive)[] {
|
||||||
|
|
||||||
// This is pretty ugly. If we have an outer attribute then we can't accept
|
// This is pretty ugly. If we have an outer attribute then we can't accept
|
||||||
// seeing the terminator next, so if we do see it then fail the same way
|
// seeing the terminator next, so if we do see it then fail the same way
|
||||||
@ -2429,10 +2429,10 @@ fn parse_crate_directives(&parser p, token::token term,
|
|||||||
expect_word(p, "mod");
|
expect_word(p, "mod");
|
||||||
}
|
}
|
||||||
|
|
||||||
let vec[@ast::crate_directive] cdirs = [];
|
let (@ast::crate_directive)[] cdirs = ~[];
|
||||||
while (p.peek() != term) {
|
while (p.peek() != term) {
|
||||||
auto cdir = @parse_crate_directive(p, first_outer_attr);
|
auto cdir = @parse_crate_directive(p, first_outer_attr);
|
||||||
vec::push(cdirs, cdir);
|
cdirs += ~[cdir];
|
||||||
}
|
}
|
||||||
ret cdirs;
|
ret cdirs;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user