Remove Analysis::into_engine
.
This is a standard pattern: ``` MyAnalysis.into_engine(tcx, body).iterate_to_fixpoint() ``` `into_engine` and `iterate_to_fixpoint` are always called in pairs, but sometimes with a builder-style `pass_name` call between them. But a builder-style interface is overkill here. This has been bugging me a for a while. This commit: - Merges `Engine::new` and `Engine::iterate_to_fixpoint`. This removes the need for `Engine` to have fields, leaving it as a trivial type that the next commit will remove. - Renames `Analysis::into_engine` as `Analysis::iterate_to_fixpoint`, gives it an extra argument for the optional pass name, and makes it call `Engine::iterate_to_fixpoint` instead of `Engine::new`. This turns the pattern from above into this: ``` MyAnalysis.iterate_to_fixpoint(tcx, body, None) ``` which is shorter at every call site, and there's less plumbing required to support it.
This commit is contained in:
parent
31e102c509
commit
e54c177118
14 changed files with 72 additions and 116 deletions
|
@ -63,8 +63,7 @@ impl<'mir, 'tcx> Qualifs<'mir, 'tcx> {
|
|||
let ConstCx { tcx, body, .. } = *ccx;
|
||||
|
||||
FlowSensitiveAnalysis::new(NeedsDrop, ccx)
|
||||
.into_engine(tcx, body)
|
||||
.iterate_to_fixpoint()
|
||||
.iterate_to_fixpoint(tcx, body, None)
|
||||
.into_results_cursor(body)
|
||||
});
|
||||
|
||||
|
@ -93,8 +92,7 @@ impl<'mir, 'tcx> Qualifs<'mir, 'tcx> {
|
|||
let ConstCx { tcx, body, .. } = *ccx;
|
||||
|
||||
FlowSensitiveAnalysis::new(NeedsNonConstDrop, ccx)
|
||||
.into_engine(tcx, body)
|
||||
.iterate_to_fixpoint()
|
||||
.iterate_to_fixpoint(tcx, body, None)
|
||||
.into_results_cursor(body)
|
||||
});
|
||||
|
||||
|
@ -123,8 +121,7 @@ impl<'mir, 'tcx> Qualifs<'mir, 'tcx> {
|
|||
let ConstCx { tcx, body, .. } = *ccx;
|
||||
|
||||
FlowSensitiveAnalysis::new(HasMutInterior, ccx)
|
||||
.into_engine(tcx, body)
|
||||
.iterate_to_fixpoint()
|
||||
.iterate_to_fixpoint(tcx, body, None)
|
||||
.into_results_cursor(body)
|
||||
});
|
||||
|
||||
|
@ -239,8 +236,7 @@ impl<'mir, 'tcx> Checker<'mir, 'tcx> {
|
|||
let always_live_locals = &always_storage_live_locals(&ccx.body);
|
||||
let mut maybe_storage_live =
|
||||
MaybeStorageLive::new(Cow::Borrowed(always_live_locals))
|
||||
.into_engine(ccx.tcx, &ccx.body)
|
||||
.iterate_to_fixpoint()
|
||||
.iterate_to_fixpoint(ccx.tcx, &ccx.body, None)
|
||||
.into_results_cursor(&ccx.body);
|
||||
|
||||
// And then check all `Return` in the MIR, and if a local is "maybe live" at a
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue