@@ -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
@@ -226,12 +226,20 @@ fn mk_reexport_mod(cx: &mut TestCtxt, parent: ast::NodeId, tests: Vec<ast::Ident
226
226
tested_submods : Vec < ( ast:: Ident , ast:: Ident ) > ) -> ( P < ast:: Item > , ast:: Ident ) {
227
227
let super_ = token:: str_to_ident ( "super" ) ;
228
228
229
+ // Generate imports with `#[allow(private_in_public)]` to work around issue #36768.
230
+ let allow_private_in_public = cx. ext_cx . attribute ( DUMMY_SP , cx. ext_cx . meta_list (
231
+ DUMMY_SP ,
232
+ InternedString :: new ( "allow" ) ,
233
+ vec ! [ cx. ext_cx. meta_list_item_word( DUMMY_SP , InternedString :: new( "private_in_public" ) ) ] ,
234
+ ) ) ;
229
235
let items = tests. into_iter ( ) . map ( |r| {
230
236
cx. ext_cx . item_use_simple ( DUMMY_SP , ast:: Visibility :: Public ,
231
237
cx. ext_cx . path ( DUMMY_SP , vec ! [ super_, r] ) )
238
+ . map_attrs ( |_| vec ! [ allow_private_in_public. clone( ) ] )
232
239
} ) . chain ( tested_submods. into_iter ( ) . map ( |( r, sym) | {
233
240
let path = cx. ext_cx . path ( DUMMY_SP , vec ! [ super_, r, sym] ) ;
234
241
cx. ext_cx . item_use_simple_ ( DUMMY_SP , ast:: Visibility :: Public , r, path)
242
+ . map_attrs ( |_| vec ! [ allow_private_in_public. clone( ) ] )
235
243
} ) ) . collect ( ) ;
236
244
237
245
let reexport_mod = ast:: Mod {
0 commit comments