summary refs log tree commit diff
path: root/src/comp/syntax
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/syntax')
-rw-r--r--src/comp/syntax/ast.rs4
-rw-r--r--src/comp/syntax/fold.rs8
-rw-r--r--src/comp/syntax/parse/eval.rs20
-rw-r--r--src/comp/syntax/parse/parser.rs11
-rw-r--r--src/comp/syntax/visit.rs4
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);
         }