Skip to content

Commit 12b991d

Browse files
committed
Don't panic when encountering unexpected constructor
1 parent ef32456 commit 12b991d

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

compiler/rustc_pattern_analysis/src/constructor.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
940940
}
941941
ConstructorSet::Variants { variants, non_exhaustive } => {
942942
let mut seen_set = index::IdxSet::new_empty(variants.len());
943-
for idx in seen.iter().map(|c| c.as_variant().unwrap()) {
943+
for idx in seen.iter().filter_map(|c| c.as_variant()) {
944944
seen_set.insert(idx);
945945
}
946946
let mut skipped_a_hidden_variant = false;
@@ -969,7 +969,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
969969
ConstructorSet::Bool => {
970970
let mut seen_false = false;
971971
let mut seen_true = false;
972-
for b in seen.iter().map(|ctor| ctor.as_bool().unwrap()) {
972+
for b in seen.iter().filter_map(|ctor| ctor.as_bool()) {
973973
if b {
974974
seen_true = true;
975975
} else {
@@ -989,7 +989,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
989989
}
990990
ConstructorSet::Integers { range_1, range_2 } => {
991991
let seen_ranges: Vec<_> =
992-
seen.iter().map(|ctor| *ctor.as_int_range().unwrap()).collect();
992+
seen.iter().filter_map(|ctor| ctor.as_int_range()).copied().collect();
993993
for (seen, splitted_range) in range_1.split(seen_ranges.iter().cloned()) {
994994
match seen {
995995
Presence::Unseen => missing.push(IntRange(splitted_range)),
@@ -1006,7 +1006,7 @@ impl<Cx: TypeCx> ConstructorSet<Cx> {
10061006
}
10071007
}
10081008
ConstructorSet::Slice { array_len, subtype_is_empty } => {
1009-
let seen_slices = seen.iter().map(|c| c.as_slice().unwrap());
1009+
let seen_slices = seen.iter().filter_map(|c| c.as_slice());
10101010
let base_slice = Slice::new(*array_len, VarLen(0, 0));
10111011
for (seen, splitted_slice) in base_slice.split(seen_slices) {
10121012
let ctor = Slice(splitted_slice);

0 commit comments

Comments
 (0)