about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-09-27 20:00:08 +0000
committerJeffrey Seyfried <jeffrey.seyfried@gmail.com>2016-09-27 20:23:59 +0000
commitdd4781547852c9bf34ffcf5362b1e25da84ecc51 (patch)
tree02f9169e1381c76ea46412c8be54a98aaf9bf1d6 /src/libsyntax
parentd0623cf7bda44849ab5df78a06b22f9108cf821a (diff)
downloadrust-dd4781547852c9bf34ffcf5362b1e25da84ecc51.tar.gz
rust-dd4781547852c9bf34ffcf5362b1e25da84ecc51.zip
Avoid re-export errors in the generated test harness.
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/test.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs
index 6327e8f71bc..b3d3667fd42 100644
--- a/src/libsyntax/test.rs
+++ b/src/libsyntax/test.rs
@@ -19,7 +19,7 @@ use std::iter;
 use std::slice;
 use std::mem;
 use std::vec;
-use attr;
+use attr::{self, HasAttrs};
 use syntax_pos::{self, DUMMY_SP, NO_EXPANSION, Span, FileMap, BytePos};
 use std::rc::Rc;
 
@@ -243,12 +243,20 @@ fn mk_reexport_mod(cx: &mut TestCtxt, tests: Vec<ast::Ident>,
                    tested_submods: Vec<(ast::Ident, ast::Ident)>) -> (P<ast::Item>, ast::Ident) {
     let super_ = token::str_to_ident("super");
 
+    // Generate imports with `#[allow(private_in_public)]` to work around issue #36768.
+    let allow_private_in_public = cx.ext_cx.attribute(DUMMY_SP, cx.ext_cx.meta_list(
+        DUMMY_SP,
+        InternedString::new("allow"),
+        vec![cx.ext_cx.meta_list_item_word(DUMMY_SP, InternedString::new("private_in_public"))],
+    ));
     let items = tests.into_iter().map(|r| {
         cx.ext_cx.item_use_simple(DUMMY_SP, ast::Visibility::Public,
                                   cx.ext_cx.path(DUMMY_SP, vec![super_, r]))
+            .map_attrs(|_| vec![allow_private_in_public.clone()])
     }).chain(tested_submods.into_iter().map(|(r, sym)| {
         let path = cx.ext_cx.path(DUMMY_SP, vec![super_, r, sym]);
         cx.ext_cx.item_use_simple_(DUMMY_SP, ast::Visibility::Public, r, path)
+            .map_attrs(|_| vec![allow_private_in_public.clone()])
     })).collect();
 
     let reexport_mod = ast::Mod {