Rollup merge of #121735 - Nadrieril:no-panic-on-type-error, r=compiler-errors
pattern analysis: Don't panic when encountering unexpected constructor Tiny PR to fix https://github.com/rust-lang/rust-analyzer/issues/16656 r? ``@compiler-errors``
This commit is contained in:
commit
eca6a249a6
@ -940,7 +940,7 @@ pub fn split<'a>(
|
||||
}
|
||||
ConstructorSet::Variants { variants, non_exhaustive } => {
|
||||
let mut seen_set = index::IdxSet::new_empty(variants.len());
|
||||
for idx in seen.iter().map(|c| c.as_variant().unwrap()) {
|
||||
for idx in seen.iter().filter_map(|c| c.as_variant()) {
|
||||
seen_set.insert(idx);
|
||||
}
|
||||
let mut skipped_a_hidden_variant = false;
|
||||
@ -969,7 +969,7 @@ pub fn split<'a>(
|
||||
ConstructorSet::Bool => {
|
||||
let mut seen_false = false;
|
||||
let mut seen_true = false;
|
||||
for b in seen.iter().map(|ctor| ctor.as_bool().unwrap()) {
|
||||
for b in seen.iter().filter_map(|ctor| ctor.as_bool()) {
|
||||
if b {
|
||||
seen_true = true;
|
||||
} else {
|
||||
@ -989,7 +989,7 @@ pub fn split<'a>(
|
||||
}
|
||||
ConstructorSet::Integers { range_1, range_2 } => {
|
||||
let seen_ranges: Vec<_> =
|
||||
seen.iter().map(|ctor| *ctor.as_int_range().unwrap()).collect();
|
||||
seen.iter().filter_map(|ctor| ctor.as_int_range()).copied().collect();
|
||||
for (seen, splitted_range) in range_1.split(seen_ranges.iter().cloned()) {
|
||||
match seen {
|
||||
Presence::Unseen => missing.push(IntRange(splitted_range)),
|
||||
@ -1006,7 +1006,7 @@ pub fn split<'a>(
|
||||
}
|
||||
}
|
||||
ConstructorSet::Slice { array_len, subtype_is_empty } => {
|
||||
let seen_slices = seen.iter().map(|c| c.as_slice().unwrap());
|
||||
let seen_slices = seen.iter().filter_map(|c| c.as_slice());
|
||||
let base_slice = Slice::new(*array_len, VarLen(0, 0));
|
||||
for (seen, splitted_slice) in base_slice.split(seen_slices) {
|
||||
let ctor = Slice(splitted_slice);
|
||||
|
Loading…
Reference in New Issue
Block a user