@@ -198,6 +198,7 @@ impl<'a, 'tcx> EmbargoVisitor<'a, 'tcx> {
198
198
true
199
199
}
200
200
201
+ // Returns tuple (is_public, is_exported) for a type
201
202
fn is_public_exported_ty ( & self , ty : & hir:: Ty ) -> ( bool , bool ) {
202
203
if let hir:: TyPath ( ..) = ty. node {
203
204
match self . tcx . def_map . borrow ( ) . get ( & ty. id ) . unwrap ( ) . full_def ( ) {
@@ -216,6 +217,7 @@ impl<'a, 'tcx> EmbargoVisitor<'a, 'tcx> {
216
217
}
217
218
}
218
219
220
+ // Returns tuple (is_public, is_exported) for a trait
219
221
fn is_public_exported_trait ( & self , trait_ref : & hir:: TraitRef ) -> ( bool , bool ) {
220
222
let did = self . tcx . trait_ref_to_def_id ( trait_ref) ;
221
223
if let Some ( node_id) = self . tcx . map . as_local_node_id ( did) {
@@ -226,8 +228,12 @@ impl<'a, 'tcx> EmbargoVisitor<'a, 'tcx> {
226
228
}
227
229
228
230
fn maybe_insert_id ( & mut self , id : ast:: NodeId ) {
229
- if self . prev_public { self . public_items . insert ( id) ; }
230
- if self . prev_exported { self . exported_items . insert ( id) ; }
231
+ if self . prev_public {
232
+ self . public_items . insert ( id) ;
233
+ }
234
+ if self . prev_exported {
235
+ self . exported_items . insert ( id) ;
236
+ }
231
237
}
232
238
}
233
239
@@ -269,7 +275,9 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
269
275
self . maybe_insert_id ( variant. node . data . id ( ) ) ;
270
276
for field in variant. node . data . fields ( ) {
271
277
// Variant fields are always public
272
- if self . prev_public { self . public_items . insert ( field. node . id ) ; }
278
+ if self . prev_public {
279
+ self . public_items . insert ( field. node . id ) ;
280
+ }
273
281
// FIXME: Make fields exported (requires fixing resulting ICEs)
274
282
// if self.prev_exported { self.exported_items.insert(field.node.id); }
275
283
}
@@ -285,8 +293,12 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
285
293
286
294
for impl_item in impl_items {
287
295
if impl_item. vis == hir:: Public {
288
- if public_ty { self . public_items . insert ( impl_item. id ) ; }
289
- if exported_ty { self . exported_items . insert ( impl_item. id ) ; }
296
+ if public_ty {
297
+ self . public_items . insert ( impl_item. id ) ;
298
+ }
299
+ if exported_ty {
300
+ self . exported_items . insert ( impl_item. id ) ;
301
+ }
290
302
}
291
303
}
292
304
}
@@ -309,21 +321,33 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
309
321
let ( public_ty, _exported_ty) = self . is_public_exported_ty ( & ty) ;
310
322
let ( public_trait, exported_trait) = self . is_public_exported_trait ( trait_ref) ;
311
323
312
- if public_ty && public_trait { self . public_items . insert ( item. id ) ; }
313
- if exported_trait { self . exported_items . insert ( item. id ) ; }
324
+ if public_ty && public_trait {
325
+ self . public_items . insert ( item. id ) ;
326
+ }
327
+ if exported_trait {
328
+ self . exported_items . insert ( item. id ) ;
329
+ }
314
330
315
331
for impl_item in impl_items {
316
- if public_ty && public_trait { self . public_items . insert ( impl_item. id ) ; }
317
- if exported_trait { self . exported_items . insert ( impl_item. id ) ; }
332
+ if public_ty && public_trait {
333
+ self . public_items . insert ( impl_item. id ) ;
334
+ }
335
+ if exported_trait {
336
+ self . exported_items . insert ( impl_item. id ) ;
337
+ }
318
338
}
319
339
}
320
340
321
341
// Default trait impls are exported for public traits
322
342
hir:: ItemDefaultImpl ( _, ref trait_ref) => {
323
343
let ( public_trait, exported_trait) = self . is_public_exported_trait ( trait_ref) ;
324
344
325
- if public_trait { self . public_items . insert ( item. id ) ; }
326
- if exported_trait { self . exported_items . insert ( item. id ) ; }
345
+ if public_trait {
346
+ self . public_items . insert ( item. id ) ;
347
+ }
348
+ if exported_trait {
349
+ self . exported_items . insert ( item. id ) ;
350
+ }
327
351
}
328
352
329
353
// Default methods on traits are all public so long as the trait
@@ -342,7 +366,9 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
342
366
for field in def. fields ( ) {
343
367
// Struct fields can be public or private, so lets check
344
368
if field. node . kind . visibility ( ) == hir:: Public {
345
- if self . prev_public { self . public_items . insert ( field. node . id ) ; }
369
+ if self . prev_public {
370
+ self . public_items . insert ( field. node . id ) ;
371
+ }
346
372
// FIXME: Make fields exported (requires fixing resulting ICEs)
347
373
// if self.prev_exported { self.exported_items.insert(field.node.id); }
348
374
}
@@ -369,8 +395,12 @@ impl<'a, 'tcx, 'v> Visitor<'v> for EmbargoVisitor<'a, 'tcx> {
369
395
let exported = self . prev_exported && foreign_item. vis == hir:: Public ||
370
396
self . reexports . contains ( & foreign_item. id ) ;
371
397
372
- if public { self . public_items . insert ( foreign_item. id ) ; }
373
- if exported { self . exported_items . insert ( foreign_item. id ) ; }
398
+ if public {
399
+ self . public_items . insert ( foreign_item. id ) ;
400
+ }
401
+ if exported {
402
+ self . exported_items . insert ( foreign_item. id ) ;
403
+ }
374
404
}
375
405
}
376
406
0 commit comments