diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-09-24 12:53:32 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-09-24 17:29:32 -0700 |
| commit | 9c6ae658658a48c4686a0f09be5cf6a3f45e0fb5 (patch) | |
| tree | 66b9456a3a34f387c8d09d64fd6ad5a1248c25b6 /src/libsyntax/parse | |
| parent | c675cd396d729ad7e427abd370489767a0db6ab6 (diff) | |
| download | rust-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.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 5 |
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() } |
