@@ -19,7 +19,7 @@ use std::iter;
19
19
use std:: slice;
20
20
use std:: mem;
21
21
use std:: vec;
22
- use attr;
22
+ use attr:: { self , HasAttrs } ;
23
23
use syntax_pos:: { self , DUMMY_SP , NO_EXPANSION , Span , FileMap , BytePos } ;
24
24
use std:: rc:: Rc ;
25
25
@@ -243,12 +243,20 @@ fn mk_reexport_mod(cx: &mut TestCtxt, tests: Vec<ast::Ident>,
243
243
tested_submods : Vec < ( ast:: Ident , ast:: Ident ) > ) -> ( P < ast:: Item > , ast:: Ident ) {
244
244
let super_ = token:: str_to_ident ( "super" ) ;
245
245
246
+ // Generate imports with `#[allow(private_in_public)]` to work around issue #36768.
247
+ let allow_private_in_public = cx. ext_cx . attribute ( DUMMY_SP , cx. ext_cx . meta_list (
248
+ DUMMY_SP ,
249
+ InternedString :: new ( "allow" ) ,
250
+ vec ! [ cx. ext_cx. meta_list_item_word( DUMMY_SP , InternedString :: new( "private_in_public" ) ) ] ,
251
+ ) ) ;
246
252
let items = tests. into_iter ( ) . map ( |r| {
247
253
cx. ext_cx . item_use_simple ( DUMMY_SP , ast:: Visibility :: Public ,
248
254
cx. ext_cx . path ( DUMMY_SP , vec ! [ super_, r] ) )
255
+ . map_attrs ( |_| vec ! [ allow_private_in_public. clone( ) ] )
249
256
} ) . chain ( tested_submods. into_iter ( ) . map ( |( r, sym) | {
250
257
let path = cx. ext_cx . path ( DUMMY_SP , vec ! [ super_, r, sym] ) ;
251
258
cx. ext_cx . item_use_simple_ ( DUMMY_SP , ast:: Visibility :: Public , r, path)
259
+ . map_attrs ( |_| vec ! [ allow_private_in_public. clone( ) ] )
252
260
} ) ) . collect ( ) ;
253
261
254
262
let reexport_mod = ast:: Mod {
0 commit comments