diff options
Diffstat (limited to 'src/comp/syntax')
| -rw-r--r-- | src/comp/syntax/ast.rs | 4 | ||||
| -rw-r--r-- | src/comp/syntax/fold.rs | 8 | ||||
| -rw-r--r-- | src/comp/syntax/parse/eval.rs | 20 | ||||
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 11 | ||||
| -rw-r--r-- | src/comp/syntax/visit.rs | 4 |
5 files changed, 24 insertions, 23 deletions
diff --git a/src/comp/syntax/ast.rs b/src/comp/syntax/ast.rs index ecba4efceca..47e254aa011 100644 --- a/src/comp/syntax/ast.rs +++ b/src/comp/syntax/ast.rs @@ -58,8 +58,8 @@ type crate_ = config: crate_cfg}; tag crate_directive_ { - cdir_src_mod(ident, option::t<filename>, [attribute]); - cdir_dir_mod(ident, option::t<filename>, [@crate_directive], [attribute]); + cdir_src_mod(ident, [attribute]); + cdir_dir_mod(ident, [@crate_directive], [attribute]); cdir_view_item(@view_item); cdir_syntax(path); } diff --git a/src/comp/syntax/fold.rs b/src/comp/syntax/fold.rs index f9c23b4de25..78340593f68 100644 --- a/src/comp/syntax/fold.rs +++ b/src/comp/syntax/fold.rs @@ -159,11 +159,11 @@ fn noop_fold_crate(c: crate_, fld: ast_fold) -> crate_ { fn noop_fold_crate_directive(cd: crate_directive_, fld: ast_fold) -> crate_directive_ { ret alt cd { - cdir_src_mod(id, fname, attrs) { - cdir_src_mod(fld.fold_ident(id), fname, attrs) + cdir_src_mod(id, attrs) { + cdir_src_mod(fld.fold_ident(id), attrs) } - cdir_dir_mod(id, fname, cds, attrs) { - cdir_dir_mod(fld.fold_ident(id), fname, + cdir_dir_mod(id, cds, attrs) { + cdir_dir_mod(fld.fold_ident(id), vec::map(fld.fold_crate_directive, cds), attrs) } cdir_view_item(vi) { cdir_view_item(fld.fold_view_item(vi)) } diff --git a/src/comp/syntax/parse/eval.rs b/src/comp/syntax/parse/eval.rs index 2c1c0155cf0..bc8a51e1f34 100644 --- a/src/comp/syntax/parse/eval.rs +++ b/src/comp/syntax/parse/eval.rs @@ -1,4 +1,5 @@ +import front::attr; import std::{option, result, io, fs}; import std::option::{some, none}; import syntax::ast; @@ -86,13 +87,21 @@ fn parse_companion_mod(cx: ctx, prefix: str, suffix: option::t<str>) } } +fn cdir_path_opt(id: str, attrs: [ast::attribute]) -> str { + alt attr::get_meta_item_value_str_by_name(attrs, "path") { + some(d) { + ret d; + } + none. { ret id; } + } +} + fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str, &view_items: [@ast::view_item], &items: [@ast::item]) { alt cdir.node { - ast::cdir_src_mod(id, file_opt, attrs) { - let file_path = id + ".rs"; - alt file_opt { some(f) { file_path = f; } none. { } } + ast::cdir_src_mod(id, attrs) { + let file_path = cdir_path_opt(id + ".rs", attrs); let full_path = if std::fs::path_is_absolute(file_path) { file_path @@ -113,9 +122,8 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: str, cx.byte_pos = p0.get_byte_pos(); items += [i]; } - ast::cdir_dir_mod(id, dir_opt, cdirs, attrs) { - let path = id; - alt dir_opt { some(d) { path = d; } none. { } } + ast::cdir_dir_mod(id, cdirs, attrs) { + let path = cdir_path_opt(id, attrs); let full_path = if std::fs::path_is_absolute(path) { path diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index 4f81a1dfe73..82c477a7d96 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -2475,19 +2475,12 @@ fn parse_crate_directive(p: parser, first_outer_attr: [ast::attribute]) -> if expect_mod || is_word(p, "mod") { expect_word(p, "mod"); let id = parse_ident(p); - let file_opt = - alt p.peek() { - token::EQ. { p.bump(); some(parse_str(p)) } - _ { - attr::get_meta_item_value_str_by_name(outer_attrs, "path") - } - }; alt p.peek() { // mod x = "foo.rs"; token::SEMI. { let hi = p.get_hi_pos(); p.bump(); - ret spanned(lo, hi, ast::cdir_src_mod(id, file_opt, outer_attrs)); + ret spanned(lo, hi, ast::cdir_src_mod(id, outer_attrs)); } // mod x = "foo_dir" { ...directives... } token::LBRACE. { @@ -2500,7 +2493,7 @@ fn parse_crate_directive(p: parser, first_outer_attr: [ast::attribute]) -> let hi = p.get_hi_pos(); expect(p, token::RBRACE); ret spanned(lo, hi, - ast::cdir_dir_mod(id, file_opt, cdirs, mod_attrs)); + ast::cdir_dir_mod(id, cdirs, mod_attrs)); } t { unexpected(p, t); } } diff --git a/src/comp/syntax/visit.rs b/src/comp/syntax/visit.rs index 5273d16e544..45249be23a6 100644 --- a/src/comp/syntax/visit.rs +++ b/src/comp/syntax/visit.rs @@ -56,8 +56,8 @@ fn visit_crate<E>(c: crate, e: E, v: vt<E>) { fn visit_crate_directive<E>(cd: @crate_directive, e: E, v: vt<E>) { alt cd.node { - cdir_src_mod(_, _, _) { } - cdir_dir_mod(_, _, cdirs, _) { + cdir_src_mod(_, _) { } + cdir_dir_mod(_, cdirs, _) { for cdir: @crate_directive in cdirs { visit_crate_directive(cdir, e, v); } |
