@@ -423,6 +423,9 @@ impl ModuleDef {
423423 } ;
424424 if let Some ( fields) = fields {
425425 for field in fields {
426+ if !field. has_default {
427+ continue ;
428+ }
426429 let def: DefWithBody = field. into ( ) ;
427430 def. diagnostics ( db, & mut acc, style_lints) ;
428431 }
@@ -1249,6 +1252,7 @@ impl From<&Field> for DefWithBodyId {
12491252pub struct Field {
12501253 pub ( crate ) parent : VariantDef ,
12511254 pub ( crate ) id : LocalFieldId ,
1255+ pub ( crate ) has_default : bool ,
12521256}
12531257
12541258#[ derive( Debug , PartialEq , Eq , Copy , Clone , Hash ) ]
@@ -1414,7 +1418,7 @@ impl Struct {
14141418 . variant_data
14151419 . fields ( )
14161420 . iter ( )
1417- . map ( |( id, _ ) | Field { parent : self . into ( ) , id } )
1421+ . map ( |( id, d ) | Field { parent : self . into ( ) , id, has_default : d . has_default } )
14181422 . collect ( )
14191423 }
14201424
@@ -1476,7 +1480,7 @@ impl Union {
14761480 . variant_data
14771481 . fields ( )
14781482 . iter ( )
1479- . map ( |( id, _ ) | Field { parent : self . into ( ) , id } )
1483+ . map ( |( id, d ) | Field { parent : self . into ( ) , id, has_default : d . has_default } )
14801484 . collect ( )
14811485 }
14821486
@@ -1606,7 +1610,7 @@ impl Variant {
16061610 self . variant_data ( db)
16071611 . fields ( )
16081612 . iter ( )
1609- . map ( |( id, _ ) | Field { parent : self . into ( ) , id } )
1613+ . map ( |( id, d ) | Field { parent : self . into ( ) , id, has_default : d . has_default } )
16101614 . collect ( )
16111615 }
16121616
@@ -5162,10 +5166,13 @@ impl Type {
51625166 _ => return Vec :: new ( ) ,
51635167 } ;
51645168
5169+ let var_data = db. variant_data ( variant_id) ;
5170+ let fields = var_data. fields ( ) ;
51655171 db. field_types ( variant_id)
51665172 . iter ( )
51675173 . map ( |( local_id, ty) | {
5168- let def = Field { parent : variant_id. into ( ) , id : local_id } ;
5174+ let has_default = fields[ local_id] . has_default ;
5175+ let def = Field { parent : variant_id. into ( ) , id : local_id, has_default } ;
51695176 let ty = ty. clone ( ) . substitute ( Interner , substs) ;
51705177 ( def, self . derived ( ty) )
51715178 } )
0 commit comments