@@ -888,8 +888,8 @@ fn should_encode_mir(tcx: TyCtxt<'_>, def_id: LocalDefId) -> (bool, bool) {
888
888
| DefKind :: AssocConst
889
889
| DefKind :: Static ( ..)
890
890
| DefKind :: Const => ( true , false ) ,
891
- // Full-fledged functions
892
- DefKind :: AssocFn | DefKind :: Fn => {
891
+ // Full-fledged functions + closures
892
+ DefKind :: AssocFn | DefKind :: Fn | DefKind :: Closure => {
893
893
let generics = tcx. generics_of ( def_id) ;
894
894
let needs_inline = ( generics. requires_monomorphization ( tcx)
895
895
|| tcx. codegen_fn_attrs ( def_id) . requests_inline ( ) )
@@ -900,15 +900,6 @@ fn should_encode_mir(tcx: TyCtxt<'_>, def_id: LocalDefId) -> (bool, bool) {
900
900
let always_encode_mir = tcx. sess . opts . unstable_opts . always_encode_mir ;
901
901
( is_const_fn, needs_inline || always_encode_mir)
902
902
}
903
- // Closures can't be const fn.
904
- DefKind :: Closure => {
905
- let generics = tcx. generics_of ( def_id) ;
906
- let needs_inline = ( generics. requires_monomorphization ( tcx)
907
- || tcx. codegen_fn_attrs ( def_id) . requests_inline ( ) )
908
- && tcx. sess . opts . output_types . should_codegen ( ) ;
909
- let always_encode_mir = tcx. sess . opts . unstable_opts . always_encode_mir ;
910
- ( false , needs_inline || always_encode_mir)
911
- }
912
903
// Generators require optimized MIR to compute layout.
913
904
DefKind :: Generator => ( false , true ) ,
914
905
// The others don't have MIR.
0 commit comments