fn switch_on_enum_discriminant<'mir, 'tcx>(
tcx: TyCtxt<'tcx>,
body: &'mir Body<'tcx>,
block: &'mir BasicBlockData<'tcx>,
switch_on: Place<'tcx>,
) -> Option<(Place<'tcx>, AdtDef<'tcx>)>
Expand description
Inspect a SwitchInt
-terminated basic block to see if the condition of that SwitchInt
is
an enum discriminant.
We expect such blocks to have a call to discriminant
as their last statement like so:
...
_42 = discriminant(_1)
SwitchInt(_42, ..)
If the basic block matches this pattern, this function returns the place corresponding to the
enum (_1
in the example above) as well as the AdtDef
of that enum.