@@ -2330,7 +2330,7 @@ fn bad_variant_count<'tcx>(tcx: TyCtxt<'tcx>, adt: &'tcx ty::AdtDef, sp: Span, d
2330
2330
) ;
2331
2331
let mut err = struct_span_err ! ( tcx. sess, sp, E0731 , "transparent enum {}" , msg) ;
2332
2332
err. span_label ( sp, & msg) ;
2333
- if let & [ ref start @ .., ref end] = & variant_spans[ .. ] {
2333
+ if let [ start @ .., end] = & * variant_spans {
2334
2334
for variant_span in start {
2335
2335
err. span_label ( * variant_span, "" ) ;
2336
2336
}
@@ -2372,23 +2372,14 @@ fn check_transparent(tcx: TyCtxt<'_>, sp: Span, def_id: DefId) {
2372
2372
}
2373
2373
let sp = tcx. sess . source_map ( ) . def_span ( sp) ;
2374
2374
2375
- if adt. is_enum ( ) {
2376
- if !tcx. features ( ) . transparent_enums {
2377
- feature_err (
2378
- & tcx. sess . parse_sess ,
2379
- sym:: transparent_enums,
2380
- sp,
2381
- "transparent enums are unstable" ,
2382
- )
2383
- . emit ( ) ;
2384
- }
2385
- if adt. variants . len ( ) != 1 {
2386
- bad_variant_count ( tcx, adt, sp, def_id) ;
2387
- if adt. variants . is_empty ( ) {
2388
- // Don't bother checking the fields. No variants (and thus no fields) exist.
2389
- return ;
2390
- }
2391
- }
2375
+ if adt. is_enum ( ) && !tcx. features ( ) . transparent_enums {
2376
+ feature_err (
2377
+ & tcx. sess . parse_sess ,
2378
+ sym:: transparent_enums,
2379
+ sp,
2380
+ "transparent enums are unstable" ,
2381
+ )
2382
+ . emit ( ) ;
2392
2383
}
2393
2384
2394
2385
if adt. is_union ( ) && !tcx. features ( ) . transparent_unions {
@@ -2401,6 +2392,14 @@ fn check_transparent(tcx: TyCtxt<'_>, sp: Span, def_id: DefId) {
2401
2392
. emit ( ) ;
2402
2393
}
2403
2394
2395
+ if adt. variants . len ( ) != 1 {
2396
+ bad_variant_count ( tcx, adt, sp, def_id) ;
2397
+ if adt. variants . is_empty ( ) {
2398
+ // Don't bother checking the fields. No variants (and thus no fields) exist.
2399
+ return ;
2400
+ }
2401
+ }
2402
+
2404
2403
// For each field, figure out if it's known to be a ZST and align(1)
2405
2404
let field_infos = adt. all_fields ( ) . map ( |field| {
2406
2405
let ty = field. ty ( tcx, InternalSubsts :: identity_for_item ( tcx, field. did ) ) ;
0 commit comments