about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorJonathan Turner <jonathandturner@users.noreply.github.com>2016-09-28 20:21:51 -0700
committerGitHub <noreply@github.com>2016-09-28 20:21:51 -0700
commit13c8e763d4d69732419fa1d23bdbf310be4b597f (patch)
tree30d9a57e59399c6dfb0456d08decbd70adb2e1b3 /src/libsyntax
parent45fd0626a4f5cf84cef8de1c644b5ff582c65e8b (diff)
parent28393be8df89dec9f78ec8bcbd73e399c6021098 (diff)
downloadrust-13c8e763d4d69732419fa1d23bdbf310be4b597f.tar.gz
rust-13c8e763d4d69732419fa1d23bdbf310be4b597f.zip
Rollup merge of #36787 - jseyfried:fix_test_harness_reexport_errors, r=nrc
Avoid re-export errors in the generated test harness

Fixes #36768.
r? @nrc
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 e4510520a55..6ccf9848c6d 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;
 
@@ -226,12 +226,20 @@ fn mk_reexport_mod(cx: &mut TestCtxt, parent: ast::NodeId, 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 {