@@ -8,7 +8,6 @@ use base_db::CrateId;
88use chalk_solve:: rust_ir:: AdtKind ;
99use either:: Either ;
1010use hir_def:: {
11- hir:: Spread ,
1211 lang_item:: LangItem ,
1312 resolver:: { HasResolver , ValueNs } ,
1413 AdtId , AssocItemId , DefWithBodyId , HasModule , ItemContainerId , Lookup ,
@@ -547,11 +546,9 @@ pub fn record_literal_missing_fields(
547546 infer : & InferenceResult ,
548547 id : ExprId ,
549548 expr : & Expr ,
550- ) -> Option < ( VariantId , Vec < LocalFieldId > , /*has spread expr*/ bool ) > {
551- let ( fields, has_spread_expr, has_ellipsis) = match expr {
552- Expr :: RecordLit { fields, spread, .. } => {
553- ( fields, matches ! ( spread, Spread :: Base ( _) ) , matches ! ( spread, Spread :: Yes ) )
554- }
549+ ) -> Option < ( VariantId , Vec < LocalFieldId > , /*exhaustive*/ bool ) > {
550+ let ( fields, exhaustive, ellipsis) = match expr {
551+ Expr :: RecordLit { fields, spread, ellipsis, .. } => ( fields, spread. is_none ( ) , * ellipsis) ,
555552 _ => return None ,
556553 } ;
557554
@@ -567,7 +564,7 @@ pub fn record_literal_missing_fields(
567564 . fields ( )
568565 . iter ( )
569566 . filter_map ( |( f, d) | {
570- if ( has_ellipsis && d. has_default ) || specified_fields. contains ( & d. name ) {
567+ if ( ellipsis && d. has_default ) || specified_fields. contains ( & d. name ) {
571568 None
572569 } else {
573570 Some ( f)
@@ -577,7 +574,7 @@ pub fn record_literal_missing_fields(
577574 if missed_fields. is_empty ( ) {
578575 return None ;
579576 }
580- Some ( ( variant_def, missed_fields, has_spread_expr ) )
577+ Some ( ( variant_def, missed_fields, exhaustive ) )
581578}
582579
583580pub fn record_pattern_missing_fields (
0 commit comments