Reorder some Analysis
methods.
In most places, the `early` method is listed before the corresponding `primary` method, like you'd expect. This commit fixes two places where that isn't the case.
This commit is contained in:
parent
1d56943f34
commit
dddc09d2c3
2 changed files with 35 additions and 35 deletions
|
@ -122,14 +122,6 @@ pub trait Analysis<'tcx> {
|
||||||
// `resume`). It's not obvious how to handle `yield` points in coroutines, however.
|
// `resume`). It's not obvious how to handle `yield` points in coroutines, however.
|
||||||
fn initialize_start_block(&self, body: &mir::Body<'tcx>, state: &mut Self::Domain);
|
fn initialize_start_block(&self, body: &mir::Body<'tcx>, state: &mut Self::Domain);
|
||||||
|
|
||||||
/// Updates the current dataflow state with the effect of evaluating a statement.
|
|
||||||
fn apply_primary_statement_effect(
|
|
||||||
&mut self,
|
|
||||||
state: &mut Self::Domain,
|
|
||||||
statement: &mir::Statement<'tcx>,
|
|
||||||
location: Location,
|
|
||||||
);
|
|
||||||
|
|
||||||
/// Updates the current dataflow state with an "early" effect, i.e. one
|
/// Updates the current dataflow state with an "early" effect, i.e. one
|
||||||
/// that occurs immediately before the given statement.
|
/// that occurs immediately before the given statement.
|
||||||
///
|
///
|
||||||
|
@ -145,6 +137,29 @@ pub trait Analysis<'tcx> {
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Updates the current dataflow state with the effect of evaluating a statement.
|
||||||
|
fn apply_primary_statement_effect(
|
||||||
|
&mut self,
|
||||||
|
state: &mut Self::Domain,
|
||||||
|
statement: &mir::Statement<'tcx>,
|
||||||
|
location: Location,
|
||||||
|
);
|
||||||
|
|
||||||
|
/// Updates the current dataflow state with an effect that occurs immediately *before* the
|
||||||
|
/// given terminator.
|
||||||
|
///
|
||||||
|
/// This method is useful if the consumer of the results of this analysis needs only to observe
|
||||||
|
/// *part* of the effect of a terminator (e.g. for two-phase borrows). As a general rule,
|
||||||
|
/// analyses should not implement this without also implementing
|
||||||
|
/// `apply_primary_terminator_effect`.
|
||||||
|
fn apply_early_terminator_effect(
|
||||||
|
&mut self,
|
||||||
|
_state: &mut Self::Domain,
|
||||||
|
_terminator: &mir::Terminator<'tcx>,
|
||||||
|
_location: Location,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
/// Updates the current dataflow state with the effect of evaluating a terminator.
|
/// Updates the current dataflow state with the effect of evaluating a terminator.
|
||||||
///
|
///
|
||||||
/// The effect of a successful return from a `Call` terminator should **not** be accounted for
|
/// The effect of a successful return from a `Call` terminator should **not** be accounted for
|
||||||
|
@ -160,21 +175,6 @@ pub trait Analysis<'tcx> {
|
||||||
terminator.edges()
|
terminator.edges()
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Updates the current dataflow state with an effect that occurs immediately *before* the
|
|
||||||
/// given terminator.
|
|
||||||
///
|
|
||||||
/// This method is useful if the consumer of the results of this analysis needs only to observe
|
|
||||||
/// *part* of the effect of a terminator (e.g. for two-phase borrows). As a general rule,
|
|
||||||
/// analyses should not implement this without also implementing
|
|
||||||
/// `apply_primary_terminator_effect`.
|
|
||||||
fn apply_early_terminator_effect(
|
|
||||||
&mut self,
|
|
||||||
_state: &mut Self::Domain,
|
|
||||||
_terminator: &mir::Terminator<'tcx>,
|
|
||||||
_location: Location,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Edge-specific effects */
|
/* Edge-specific effects */
|
||||||
|
|
||||||
/// Updates the current dataflow state with the effect of a successful return from a `Call`
|
/// Updates the current dataflow state with the effect of a successful return from a `Call`
|
||||||
|
|
|
@ -168,6 +168,16 @@ impl<'tcx, D: Direction> Analysis<'tcx> for MockAnalysis<'tcx, D> {
|
||||||
unimplemented!("This is never called since `MockAnalysis` is never iterated to fixpoint");
|
unimplemented!("This is never called since `MockAnalysis` is never iterated to fixpoint");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn apply_early_statement_effect(
|
||||||
|
&mut self,
|
||||||
|
state: &mut Self::Domain,
|
||||||
|
_statement: &mir::Statement<'tcx>,
|
||||||
|
location: Location,
|
||||||
|
) {
|
||||||
|
let idx = self.effect(Effect::Early.at_index(location.statement_index));
|
||||||
|
assert!(state.insert(idx));
|
||||||
|
}
|
||||||
|
|
||||||
fn apply_primary_statement_effect(
|
fn apply_primary_statement_effect(
|
||||||
&mut self,
|
&mut self,
|
||||||
state: &mut Self::Domain,
|
state: &mut Self::Domain,
|
||||||
|
@ -178,10 +188,10 @@ impl<'tcx, D: Direction> Analysis<'tcx> for MockAnalysis<'tcx, D> {
|
||||||
assert!(state.insert(idx));
|
assert!(state.insert(idx));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply_early_statement_effect(
|
fn apply_early_terminator_effect(
|
||||||
&mut self,
|
&mut self,
|
||||||
state: &mut Self::Domain,
|
state: &mut Self::Domain,
|
||||||
_statement: &mir::Statement<'tcx>,
|
_terminator: &mir::Terminator<'tcx>,
|
||||||
location: Location,
|
location: Location,
|
||||||
) {
|
) {
|
||||||
let idx = self.effect(Effect::Early.at_index(location.statement_index));
|
let idx = self.effect(Effect::Early.at_index(location.statement_index));
|
||||||
|
@ -198,16 +208,6 @@ impl<'tcx, D: Direction> Analysis<'tcx> for MockAnalysis<'tcx, D> {
|
||||||
assert!(state.insert(idx));
|
assert!(state.insert(idx));
|
||||||
terminator.edges()
|
terminator.edges()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn apply_early_terminator_effect(
|
|
||||||
&mut self,
|
|
||||||
state: &mut Self::Domain,
|
|
||||||
_terminator: &mir::Terminator<'tcx>,
|
|
||||||
location: Location,
|
|
||||||
) {
|
|
||||||
let idx = self.effect(Effect::Early.at_index(location.statement_index));
|
|
||||||
assert!(state.insert(idx));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue