about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-09-24 12:53:32 -0700
committerGraydon Hoare <graydon@mozilla.com>2012-09-24 17:29:32 -0700
commit9c6ae658658a48c4686a0f09be5cf6a3f45e0fb5 (patch)
tree66b9456a3a34f387c8d09d64fd6ad5a1248c25b6 /src/libsyntax/parse
parentc675cd396d729ad7e427abd370489767a0db6ab6 (diff)
downloadrust-9c6ae658658a48c4686a0f09be5cf6a3f45e0fb5.tar.gz
rust-9c6ae658658a48c4686a0f09be5cf6a3f45e0fb5.zip
Support visibility qualifiers in crate directives properly.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/eval.rs8
-rw-r--r--src/libsyntax/parse/parser.rs5
2 files changed, 7 insertions, 6 deletions
diff --git a/src/libsyntax/parse/eval.rs b/src/libsyntax/parse/eval.rs
index c5e64654d7b..7127e2747eb 100644
--- a/src/libsyntax/parse/eval.rs
+++ b/src/libsyntax/parse/eval.rs
@@ -85,7 +85,7 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path,
                         &view_items: ~[@ast::view_item],
                         &items: ~[@ast::item]) {
     match cdir.node {
-      ast::cdir_src_mod(id, attrs) => {
+      ast::cdir_src_mod(vis, id, attrs) => {
         let file_path = Path(cdir_path_opt(
             cx.sess.interner.get(id) + ~".rs", attrs));
         let full_path = if file_path.is_absolute {
@@ -103,13 +103,13 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path,
 
         let i = p0.mk_item(cdir.span.lo, cdir.span.hi,
                            /* FIXME (#2543) */ copy id,
-                           ast::item_mod(m0), ast::public, mod_attrs);
+                           ast::item_mod(m0), vis, mod_attrs);
         // Thread defids, chpos and byte_pos through the parsers
         cx.sess.chpos = r0.chpos;
         cx.sess.byte_pos = cx.sess.byte_pos + r0.pos;
         vec::push(items, i);
       }
-      ast::cdir_dir_mod(id, cdirs, attrs) => {
+      ast::cdir_dir_mod(vis, id, cdirs, attrs) => {
         let path = Path(cdir_path_opt(*cx.sess.interner.get(id), attrs));
         let full_path = if path.is_absolute {
             copy path
@@ -123,7 +123,7 @@ fn eval_crate_directive(cx: ctx, cdir: @ast::crate_directive, prefix: &Path,
               attrs: vec::append(attrs, a0),
               id: cx.sess.next_id,
               node: ast::item_mod(m0),
-              vis: ast::public,
+              vis: vis,
               span: cdir.span};
         cx.sess.next_id += 1;
         vec::push(items, i);
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 2ffe69c8b10..681d6296d4e 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -3601,6 +3601,7 @@ impl parser {
         let expect_mod = vec::len(outer_attrs) > 0u;
 
         let lo = self.span.lo;
+        let vis = self.parse_visibility();
         if expect_mod || self.is_keyword(~"mod") {
 
             self.expect_keyword(~"mod");
@@ -3611,7 +3612,7 @@ impl parser {
               token::SEMI => {
                 let mut hi = self.span.hi;
                 self.bump();
-                return spanned(lo, hi, cdir_src_mod(id, outer_attrs));
+                return spanned(lo, hi, cdir_src_mod(vis, id, outer_attrs));
               }
               // mod x = "foo_dir" { ...directives... }
               token::LBRACE => {
@@ -3624,7 +3625,7 @@ impl parser {
                 let mut hi = self.span.hi;
                 self.expect(token::RBRACE);
                 return spanned(lo, hi,
-                            cdir_dir_mod(id, cdirs, mod_attrs));
+                            cdir_dir_mod(vis, id, cdirs, mod_attrs));
               }
               _ => self.unexpected()
             }