diff options
| author | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-09-27 20:00:08 +0000 |
|---|---|---|
| committer | Jeffrey Seyfried <jeffrey.seyfried@gmail.com> | 2016-09-27 20:23:59 +0000 |
| commit | dd4781547852c9bf34ffcf5362b1e25da84ecc51 (patch) | |
| tree | 02f9169e1381c76ea46412c8be54a98aaf9bf1d6 /src/libsyntax | |
| parent | d0623cf7bda44849ab5df78a06b22f9108cf821a (diff) | |
| download | rust-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.rs | 10 |
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 { |
