@@ -8,7 +8,6 @@ use base_db::CrateId;
8
8
use chalk_solve:: rust_ir:: AdtKind ;
9
9
use either:: Either ;
10
10
use hir_def:: {
11
- hir:: Spread ,
12
11
lang_item:: LangItem ,
13
12
resolver:: { HasResolver , ValueNs } ,
14
13
AdtId , AssocItemId , DefWithBodyId , HasModule , ItemContainerId , Lookup ,
@@ -547,11 +546,9 @@ pub fn record_literal_missing_fields(
547
546
infer : & InferenceResult ,
548
547
id : ExprId ,
549
548
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) ,
555
552
_ => return None ,
556
553
} ;
557
554
@@ -567,7 +564,7 @@ pub fn record_literal_missing_fields(
567
564
. fields ( )
568
565
. iter ( )
569
566
. 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 ) {
571
568
None
572
569
} else {
573
570
Some ( f)
@@ -577,7 +574,7 @@ pub fn record_literal_missing_fields(
577
574
if missed_fields. is_empty ( ) {
578
575
return None ;
579
576
}
580
- Some ( ( variant_def, missed_fields, has_spread_expr ) )
577
+ Some ( ( variant_def, missed_fields, exhaustive ) )
581
578
}
582
579
583
580
pub fn record_pattern_missing_fields (
0 commit comments