From a875c7a1ea31f86d4a796209f50303564ce15a16 Mon Sep 17 00:00:00 2001 From: Simon Vandel Sillesen Date: Sat, 19 Sep 2020 23:22:54 +0200 Subject: [PATCH] Add assertion for len of vecs --- compiler/rustc_mir/src/transform/simplify_try.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/compiler/rustc_mir/src/transform/simplify_try.rs b/compiler/rustc_mir/src/transform/simplify_try.rs index bf6fdebb3d3c..4935997eb82a 100644 --- a/compiler/rustc_mir/src/transform/simplify_try.rs +++ b/compiler/rustc_mir/src/transform/simplify_try.rs @@ -568,14 +568,15 @@ impl<'a, 'tcx> SimplifyBranchSameOptimizationFinder<'a, 'tcx> { .basic_blocks() .iter_enumerated() .filter_map(|(bb_idx, bb)| { - let (discr_switched_on, targets_and_values):(_, Vec<_>) = match &bb.terminator().kind { + let (discr_switched_on, targets_and_values) = match &bb.terminator().kind { TerminatorKind::SwitchInt { targets, discr, values, .. } => { // if values.len() == targets.len() - 1, we need to include None where no value is present // such that the zip does not throw away targets. If no `otherwise` case is in targets, the zip will simply throw away the added None let values_extended = values.iter().map(|x|Some(*x)).chain(once(None)); - let targets_and_values = targets.iter().zip(values_extended) - .map(|(target, value)| SwitchTargetAndValue{target:*target, value:value}) + let targets_and_values:Vec<_> = targets.iter().zip(values_extended) + .map(|(target, value)| SwitchTargetAndValue{target:*target, value}) .collect(); + assert_eq!(targets.len(), targets_and_values.len()); (discr, targets_and_values)}, _ => return None, };