@@ -884,6 +884,11 @@ pub(crate) fn field_types_with_diagnostics_query(
884884 variant_id : VariantId ,
885885) -> ( Arc < ArenaMap < LocalFieldId , Binders < Ty > > > , Diagnostics ) {
886886 let var_data = db. variant_fields ( variant_id) ;
887+ let fields = var_data. fields ( ) ;
888+ if fields. is_empty ( ) {
889+ return ( Arc :: new ( ArenaMap :: default ( ) ) , None ) ;
890+ }
891+
887892 let ( resolver, def) : ( _ , GenericDefId ) = match variant_id {
888893 VariantId :: StructId ( it) => ( it. resolver ( db) , it. into ( ) ) ,
889894 VariantId :: UnionId ( it) => ( it. resolver ( db) , it. into ( ) ) ,
@@ -899,7 +904,7 @@ pub(crate) fn field_types_with_diagnostics_query(
899904 LifetimeElisionKind :: AnonymousReportError ,
900905 )
901906 . with_type_param_mode ( ParamLoweringMode :: Variable ) ;
902- for ( field_id, field_data) in var_data . fields ( ) . iter ( ) {
907+ for ( field_id, field_data) in fields. iter ( ) {
903908 res. insert ( field_id, make_binders ( db, & generics, ctx. lower_ty ( field_data. type_ref ) ) ) ;
904909 }
905910 ( Arc :: new ( res) , create_diagnostics ( ctx. diagnostics ) )
@@ -920,6 +925,10 @@ pub(crate) fn generic_predicates_for_param_query(
920925 assoc_name : Option < Name > ,
921926) -> GenericPredicates {
922927 let generics = generics ( db, def) ;
928+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
929+ return GenericPredicates ( None ) ;
930+ }
931+
923932 let resolver = def. resolver ( db) ;
924933 let mut ctx = TyLoweringContext :: new (
925934 db,
@@ -1025,6 +1034,10 @@ pub(crate) fn trait_environment_query(
10251034 def : GenericDefId ,
10261035) -> Arc < TraitEnvironment > {
10271036 let generics = generics ( db, def) ;
1037+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
1038+ return TraitEnvironment :: empty ( def. krate ( db) ) ;
1039+ }
1040+
10281041 let resolver = def. resolver ( db) ;
10291042 let mut ctx = TyLoweringContext :: new (
10301043 db,
@@ -1128,6 +1141,10 @@ where
11281141 F : Fn ( & WherePredicate , GenericDefId ) -> bool ,
11291142{
11301143 let generics = generics ( db, def) ;
1144+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
1145+ return ( GenericPredicates ( None ) , None ) ;
1146+ }
1147+
11311148 let resolver = def. resolver ( db) ;
11321149 let mut ctx = TyLoweringContext :: new (
11331150 db,
@@ -1154,7 +1171,7 @@ where
11541171 }
11551172 }
11561173
1157- if generics. len ( ) > 0 {
1174+ if ! generics. is_empty ( ) {
11581175 let subst = generics. bound_vars_subst ( db, DebruijnIndex :: INNERMOST ) ;
11591176 let explicitly_unsized_tys = ctx. unsized_types ;
11601177 if let Some ( implicitly_sized_predicates) =
@@ -1229,7 +1246,7 @@ pub(crate) fn generic_defaults_with_diagnostics_query(
12291246 def : GenericDefId ,
12301247) -> ( GenericDefaults , Diagnostics ) {
12311248 let generic_params = generics ( db, def) ;
1232- if generic_params. len ( ) == 0 {
1249+ if generic_params. is_empty ( ) {
12331250 return ( GenericDefaults ( None ) , None ) ;
12341251 }
12351252 let resolver = def. resolver ( db) ;
0 commit comments