@@ -884,6 +884,11 @@ pub(crate) fn field_types_with_diagnostics_query(
884
884
variant_id : VariantId ,
885
885
) -> ( Arc < ArenaMap < LocalFieldId , Binders < Ty > > > , Diagnostics ) {
886
886
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
+
887
892
let ( resolver, def) : ( _ , GenericDefId ) = match variant_id {
888
893
VariantId :: StructId ( it) => ( it. resolver ( db) , it. into ( ) ) ,
889
894
VariantId :: UnionId ( it) => ( it. resolver ( db) , it. into ( ) ) ,
@@ -899,7 +904,7 @@ pub(crate) fn field_types_with_diagnostics_query(
899
904
LifetimeElisionKind :: AnonymousReportError ,
900
905
)
901
906
. 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 ( ) {
903
908
res. insert ( field_id, make_binders ( db, & generics, ctx. lower_ty ( field_data. type_ref ) ) ) ;
904
909
}
905
910
( Arc :: new ( res) , create_diagnostics ( ctx. diagnostics ) )
@@ -920,6 +925,10 @@ pub(crate) fn generic_predicates_for_param_query(
920
925
assoc_name : Option < Name > ,
921
926
) -> GenericPredicates {
922
927
let generics = generics ( db, def) ;
928
+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
929
+ return GenericPredicates ( None ) ;
930
+ }
931
+
923
932
let resolver = def. resolver ( db) ;
924
933
let mut ctx = TyLoweringContext :: new (
925
934
db,
@@ -1025,6 +1034,10 @@ pub(crate) fn trait_environment_query(
1025
1034
def : GenericDefId ,
1026
1035
) -> Arc < TraitEnvironment > {
1027
1036
let generics = generics ( db, def) ;
1037
+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
1038
+ return TraitEnvironment :: empty ( def. krate ( db) ) ;
1039
+ }
1040
+
1028
1041
let resolver = def. resolver ( db) ;
1029
1042
let mut ctx = TyLoweringContext :: new (
1030
1043
db,
@@ -1128,6 +1141,10 @@ where
1128
1141
F : Fn ( & WherePredicate , GenericDefId ) -> bool ,
1129
1142
{
1130
1143
let generics = generics ( db, def) ;
1144
+ if generics. has_no_predicates ( ) && generics. is_empty ( ) {
1145
+ return ( GenericPredicates ( None ) , None ) ;
1146
+ }
1147
+
1131
1148
let resolver = def. resolver ( db) ;
1132
1149
let mut ctx = TyLoweringContext :: new (
1133
1150
db,
@@ -1154,7 +1171,7 @@ where
1154
1171
}
1155
1172
}
1156
1173
1157
- if generics. len ( ) > 0 {
1174
+ if ! generics. is_empty ( ) {
1158
1175
let subst = generics. bound_vars_subst ( db, DebruijnIndex :: INNERMOST ) ;
1159
1176
let explicitly_unsized_tys = ctx. unsized_types ;
1160
1177
if let Some ( implicitly_sized_predicates) =
@@ -1229,7 +1246,7 @@ pub(crate) fn generic_defaults_with_diagnostics_query(
1229
1246
def : GenericDefId ,
1230
1247
) -> ( GenericDefaults , Diagnostics ) {
1231
1248
let generic_params = generics ( db, def) ;
1232
- if generic_params. len ( ) == 0 {
1249
+ if generic_params. is_empty ( ) {
1233
1250
return ( GenericDefaults ( None ) , None ) ;
1234
1251
}
1235
1252
let resolver = def. resolver ( db) ;
0 commit comments