Extract handle_set_discriminant.
This commit is contained in:
parent
2b0bf3cf59
commit
add5124dce
@ -67,8 +67,8 @@ pub trait ValueAnalysis<'tcx> {
|
|||||||
StatementKind::Assign(box (place, rvalue)) => {
|
StatementKind::Assign(box (place, rvalue)) => {
|
||||||
self.handle_assign(*place, rvalue, state);
|
self.handle_assign(*place, rvalue, state);
|
||||||
}
|
}
|
||||||
StatementKind::SetDiscriminant { box ref place, .. } => {
|
StatementKind::SetDiscriminant { box place, variant_index } => {
|
||||||
state.flood_discr(place.as_ref(), self.map());
|
self.handle_set_discriminant(*place, *variant_index, state);
|
||||||
}
|
}
|
||||||
StatementKind::Intrinsic(box intrinsic) => {
|
StatementKind::Intrinsic(box intrinsic) => {
|
||||||
self.handle_intrinsic(intrinsic, state);
|
self.handle_intrinsic(intrinsic, state);
|
||||||
@ -94,6 +94,24 @@ pub trait ValueAnalysis<'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn handle_set_discriminant(
|
||||||
|
&self,
|
||||||
|
place: Place<'tcx>,
|
||||||
|
variant_index: VariantIdx,
|
||||||
|
state: &mut State<Self::Value>,
|
||||||
|
) {
|
||||||
|
self.super_set_discriminant(place, variant_index, state)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn super_set_discriminant(
|
||||||
|
&self,
|
||||||
|
place: Place<'tcx>,
|
||||||
|
_variant_index: VariantIdx,
|
||||||
|
state: &mut State<Self::Value>,
|
||||||
|
) {
|
||||||
|
state.flood_discr(place.as_ref(), self.map());
|
||||||
|
}
|
||||||
|
|
||||||
fn handle_intrinsic(
|
fn handle_intrinsic(
|
||||||
&self,
|
&self,
|
||||||
intrinsic: &NonDivergingIntrinsic<'tcx>,
|
intrinsic: &NonDivergingIntrinsic<'tcx>,
|
||||||
|
@ -79,9 +79,12 @@ impl<'tcx> ValueAnalysis<'tcx> for ConstAnalysis<'_, 'tcx> {
|
|||||||
&self.map
|
&self.map
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handle_statement(&self, statement: &Statement<'tcx>, state: &mut State<Self::Value>) {
|
fn handle_set_discriminant(
|
||||||
match statement.kind {
|
&self,
|
||||||
StatementKind::SetDiscriminant { box ref place, variant_index } => {
|
place: Place<'tcx>,
|
||||||
|
variant_index: VariantIdx,
|
||||||
|
state: &mut State<Self::Value>,
|
||||||
|
) {
|
||||||
state.flood_discr(place.as_ref(), &self.map);
|
state.flood_discr(place.as_ref(), &self.map);
|
||||||
if self.map.find_discr(place.as_ref()).is_some() {
|
if self.map.find_discr(place.as_ref()).is_some() {
|
||||||
let enum_ty = place.ty(self.local_decls, self.tcx).ty;
|
let enum_ty = place.ty(self.local_decls, self.tcx).ty;
|
||||||
@ -94,9 +97,6 @@ impl<'tcx> ValueAnalysis<'tcx> for ConstAnalysis<'_, 'tcx> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => self.super_statement(statement, state),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn handle_assign(
|
fn handle_assign(
|
||||||
&self,
|
&self,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user