@@ -2330,7 +2330,7 @@ fn bad_variant_count<'tcx>(tcx: TyCtxt<'tcx>, adt: &'tcx ty::AdtDef, sp: Span, d
23302330 ) ;
23312331 let mut err = struct_span_err ! ( tcx. sess, sp, E0731 , "transparent enum {}" , msg) ;
23322332 err. span_label ( sp, & msg) ;
2333- if let & [ ref start @ .., ref end] = & variant_spans[ .. ] {
2333+ if let [ start @ .., end] = & * variant_spans {
23342334 for variant_span in start {
23352335 err. span_label ( * variant_span, "" ) ;
23362336 }
@@ -2372,23 +2372,14 @@ fn check_transparent(tcx: TyCtxt<'_>, sp: Span, def_id: DefId) {
23722372 }
23732373 let sp = tcx. sess . source_map ( ) . def_span ( sp) ;
23742374
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 ( ) ;
23922383 }
23932384
23942385 if adt. is_union ( ) && !tcx. features ( ) . transparent_unions {
@@ -2401,6 +2392,14 @@ fn check_transparent(tcx: TyCtxt<'_>, sp: Span, def_id: DefId) {
24012392 . emit ( ) ;
24022393 }
24032394
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+
24042403 // For each field, figure out if it's known to be a ZST and align(1)
24052404 let field_infos = adt. all_fields ( ) . map ( |field| {
24062405 let ty = field. ty ( tcx, InternalSubsts :: identity_for_item ( tcx, field. did ) ) ;
0 commit comments