aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs')
-rw-r--r--crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs23
1 files changed, 10 insertions, 13 deletions
diff --git a/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs b/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs
index 1319745ce..91b9c7184 100644
--- a/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs
+++ b/crates/hir_ty/src/diagnostics/pattern/deconstruct_pat.rs
@@ -275,14 +275,8 @@ impl Constructor {
275 PatKind::Binding { .. } | PatKind::Wild => Wildcard, 275 PatKind::Binding { .. } | PatKind::Wild => Wildcard,
276 PatKind::Leaf { .. } | PatKind::Deref { .. } => Single, 276 PatKind::Leaf { .. } | PatKind::Deref { .. } => Single,
277 &PatKind::Variant { enum_variant, .. } => Variant(enum_variant), 277 &PatKind::Variant { enum_variant, .. } => Variant(enum_variant),
278 278 &PatKind::LiteralBool { value } => IntRange(IntRange::from_bool(value)),
279 //Todo
280 // &Pat::Lit(expr_id) => match cx.body[expr_id] {
281 // Expr::Literal(Literal::Bool(val)) => IntRange(IntRange::from_bool(val)),
282 // _ => todo!(),
283 // },
284 PatKind::Or { .. } => panic!("bug: Or-pattern should have been expanded earlier on."), 279 PatKind::Or { .. } => panic!("bug: Or-pattern should have been expanded earlier on."),
285 pat => todo!("Constructor::from_pat {:?}", pat),
286 } 280 }
287 } 281 }
288 282
@@ -690,7 +684,7 @@ impl Fields {
690 let mut subpatterns = 684 let mut subpatterns =
691 subpatterns_and_indices.iter().map(|&(_, p)| pcx.cx.pattern_arena.borrow()[p].clone()); 685 subpatterns_and_indices.iter().map(|&(_, p)| pcx.cx.pattern_arena.borrow()[p].clone());
692 // FIXME(iDawer) witnesses are not yet used 686 // FIXME(iDawer) witnesses are not yet used
693 const UNIMPLEMENTED: PatKind = PatKind::Wild; 687 const UNHANDLED: PatKind = PatKind::Wild;
694 688
695 let pat = match ctor { 689 let pat = match ctor {
696 Single | Variant(_) => match pcx.ty.kind(&Interner) { 690 Single | Variant(_) => match pcx.ty.kind(&Interner) {
@@ -728,10 +722,10 @@ impl Fields {
728 } 722 }
729 _ => PatKind::Wild, 723 _ => PatKind::Wild,
730 }, 724 },
731 Constructor::Slice(slice) => UNIMPLEMENTED, 725 Constructor::Slice(slice) => UNHANDLED,
732 Str(_) => UNIMPLEMENTED, 726 Str(_) => UNHANDLED,
733 FloatRange(..) => UNIMPLEMENTED, 727 FloatRange(..) => UNHANDLED,
734 Constructor::IntRange(_) => UNIMPLEMENTED, 728 Constructor::IntRange(_) => UNHANDLED,
735 NonExhaustive => PatKind::Wild, 729 NonExhaustive => PatKind::Wild,
736 Wildcard => return Pat::wildcard_from_ty(pcx.ty), 730 Wildcard => return Pat::wildcard_from_ty(pcx.ty),
737 Opaque => panic!("bug: we should not try to apply an opaque constructor"), 731 Opaque => panic!("bug: we should not try to apply an opaque constructor"),
@@ -855,7 +849,10 @@ impl Fields {
855 self.replace_with_fieldpats(subpatterns) 849 self.replace_with_fieldpats(subpatterns)
856 } 850 }
857 851
858 PatKind::Wild | PatKind::Binding { .. } | PatKind::Or { .. } => self.clone(), 852 PatKind::Wild
853 | PatKind::Binding { .. }
854 | PatKind::LiteralBool { .. }
855 | PatKind::Or { .. } => self.clone(),
859 } 856 }
860 } 857 }
861} 858}