1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
use std::borrow::Cow;

use crate::MirPass;
use rustc_middle::mir::{Body, MirPhase};
use rustc_middle::ty::TyCtxt;

/// Changes the MIR phase without changing the MIR itself.
pub struct PhaseChange(pub MirPhase);

impl<'tcx> MirPass<'tcx> for PhaseChange {
    fn phase_change(&self) -> Option<MirPhase> {
        Some(self.0)
    }

    fn name(&self) -> Cow<'_, str> {
        Cow::from(format!("PhaseChange-{:?}", self.0))
    }

    fn run_pass(&self, _: TyCtxt<'tcx>, _body: &mut Body<'tcx>) {}
}