Test {
span: match_pair.pattern.span,
kind: TestKind::Range {
- lo: Literal::Value { value: lo },
- hi: Literal::Value { value: hi },
+ lo,
+ hi,
ty: match_pair.pattern.ty.clone(),
end,
},
pub fn add_variants_to_switch<'pat>(&mut self,
test_place: &Place<'tcx>,
candidate: &Candidate<'pat, 'tcx>,
- variants: &mut BitVector)
+ variants: &mut BitVector<usize>)
-> bool
{
let match_pair = match candidate.match_pairs.iter().find(|mp| mp.place == *test_place) {
TestKind::Eq { value, mut ty } => {
let mut val = Operand::Copy(place.clone());
- let mut expect = self.literal_operand(test.span, ty, Literal::Value {
- value
- });
+ let mut expect = self.literal_operand(test.span, ty, value);
// Use PartialEq::eq instead of BinOp::Eq
// (the binop can only handle primitives)
let fail = self.cfg.start_new_block();
let array = self.literal_operand(
test.span,
value.ty,
- Literal::Value {
- value
- },
+ value,
);
let slice = self.temp(ty, test.span);
bindings: candidate.bindings.clone(),
guard: candidate.guard.clone(),
arm_index: candidate.arm_index,
+ pat_index: candidate.pat_index,
pre_binding_block: candidate.pre_binding_block,
next_candidate_pre_binding_block: candidate.next_candidate_pre_binding_block,
}
bindings: candidate.bindings.clone(),
guard: candidate.guard.clone(),
arm_index: candidate.arm_index,
+ pat_index: candidate.pat_index,
pre_binding_block: candidate.pre_binding_block,
next_candidate_pre_binding_block: candidate.next_candidate_pre_binding_block,
}