[nullabiltiy] Use `proves()` and `assume()` instead of deprecated synonyms.
PiperOrigin-RevId: 577096788
Change-Id: I1c063682252e5bf09c69ae3edff0fe529890a486
diff --git a/nullability/inference/collect_evidence.cc b/nullability/inference/collect_evidence.cc
index 6cf2abf..669e4bb 100644
--- a/nullability/inference/collect_evidence.cc
+++ b/nullability/inference/collect_evidence.cc
@@ -140,7 +140,7 @@
// If the flow conditions already imply that Value is not null, then we don't
// have any new evidence of a necessary annotation.
- if (Env.flowConditionImplies(NotIsNull)) return;
+ if (Env.proves(NotIsNull)) return;
// Otherwise, if an inferable slot being annotated Nonnull would imply that
// Value is not null, then we have evidence suggesting that slot should be
@@ -150,7 +150,7 @@
for (auto &[Nullability, Slot] : InferableSlots) {
auto &SlotNonnullImpliesValueNonnull =
A.makeImplies(Nullability.isNonnull(A), NotIsNull);
- if (Env.flowConditionImplies(SlotNonnullImpliesValueNonnull))
+ if (Env.proves(SlotNonnullImpliesValueNonnull))
Emit(*Env.getCurrentFunc(), Slot, EvidenceKind, Loc);
}
}
diff --git a/nullability/pointer_nullability.cc b/nullability/pointer_nullability.cc
index 8235860..83ee3fb 100644
--- a/nullability/pointer_nullability.cc
+++ b/nullability/pointer_nullability.cc
@@ -122,7 +122,7 @@
if (AdditionalConstraints)
ForseeablyNull = &A.makeAnd(*ForseeablyNull, *AdditionalConstraints);
- return !Env.flowConditionImplies(A.makeNot(*ForseeablyNull));
+ return Env.allows(*ForseeablyNull);
}
NullabilityKind getNullability(const dataflow::PointerValue &PointerVal,
@@ -131,8 +131,7 @@
auto &A = Env.getDataflowAnalysisContext().arena();
if (auto *Null = getPointerNullState(PointerVal).IsNull) {
if (AdditionalConstraints) Null = &A.makeAnd(*AdditionalConstraints, *Null);
- if (Env.flowConditionImplies(A.makeNot(*Null)))
- return NullabilityKind::NonNull;
+ if (Env.proves(A.makeNot(*Null))) return NullabilityKind::NonNull;
}
return isNullable(PointerVal, Env, AdditionalConstraints)
? NullabilityKind::Nullable
diff --git a/nullability/pointer_nullability_analysis.cc b/nullability/pointer_nullability_analysis.cc
index 3791a87..cab631f 100644
--- a/nullability/pointer_nullability_analysis.cc
+++ b/nullability/pointer_nullability_analysis.cc
@@ -395,13 +395,12 @@
: PointerComparison;
// nullptr == nullptr
- State.Env.addToFlowCondition(
- A.makeImplies(A.makeAnd(*LHSNull, *RHSNull), PointerEQ));
+ State.Env.assume(A.makeImplies(A.makeAnd(*LHSNull, *RHSNull), PointerEQ));
// nullptr != notnull
- State.Env.addToFlowCondition(
+ State.Env.assume(
A.makeImplies(A.makeAnd(*LHSNull, A.makeNot(*RHSNull)), PointerNE));
// notnull != nullptr
- State.Env.addToFlowCondition(
+ State.Env.assume(
A.makeImplies(A.makeAnd(A.makeNot(*LHSNull), *RHSNull), PointerNE));
}
@@ -955,18 +954,17 @@
// path taken - this simplifies the flow condition tracked in `MergedEnv`.
// Otherwise, information about which path was taken is used to associate
// `MergedBool` with `Bool1` and `Bool2`.
- if (Env1.flowConditionImplies(*Bool1) && Env2.flowConditionImplies(*Bool2)) {
- MergedEnv.addToFlowCondition(MergedBool);
- } else if (Env1.flowConditionImplies(A.makeNot(*Bool1)) &&
- Env2.flowConditionImplies(A.makeNot(*Bool2))) {
- MergedEnv.addToFlowCondition(A.makeNot(MergedBool));
+ if (Env1.proves(*Bool1) && Env2.proves(*Bool2)) {
+ MergedEnv.assume(MergedBool);
+ } else if (Env1.proves(A.makeNot(*Bool1)) && Env2.proves(A.makeNot(*Bool2))) {
+ MergedEnv.assume(A.makeNot(MergedBool));
} else {
// TODO(b/233582219): Flow conditions are not necessarily mutually
// exclusive, a fix is in order: https://reviews.llvm.org/D130270. Update
// this section when the patch is commited.
auto FC1 = Env1.getFlowConditionToken();
auto FC2 = Env2.getFlowConditionToken();
- MergedEnv.addToFlowCondition(A.makeOr(
+ MergedEnv.assume(A.makeOr(
A.makeAnd(A.makeAtomRef(FC1), A.makeEquals(MergedBool, *Bool1)),
A.makeAnd(A.makeAtomRef(FC2), A.makeEquals(MergedBool, *Bool2))));
}
@@ -1006,15 +1004,14 @@
if (auto *FromNullable =
mergeFormulas(Nullability1.FromNullable, Env1,
Nullability2.FromNullable, Env2, MergedEnv))
- MergedEnv.addToFlowCondition(
+ MergedEnv.assume(
A.makeEquals(*MergedNullability.FromNullable, *FromNullable));
else
forgetFromNullable(MergedPointerVal, Ctx);
if (auto *Null = mergeFormulas(Nullability1.IsNull, Env1, Nullability2.IsNull,
Env2, MergedEnv))
- MergedEnv.addToFlowCondition(
- A.makeEquals(*MergedNullability.IsNull, *Null));
+ MergedEnv.assume(A.makeEquals(*MergedNullability.IsNull, *Null));
else
forgetIsNull(MergedPointerVal, Ctx);
diff --git a/nullability/pointer_nullability_analysis_test.cc b/nullability/pointer_nullability_analysis_test.cc
index 1bc46f8..d19943a 100644
--- a/nullability/pointer_nullability_analysis_test.cc
+++ b/nullability/pointer_nullability_analysis_test.cc
@@ -33,8 +33,8 @@
std::optional<bool> evaluate(const dataflow::Formula &B,
dataflow::Environment &Env) {
- if (Env.flowConditionImplies(B)) return true;
- if (Env.flowConditionImplies(Env.arena().makeNot(B))) return false;
+ if (Env.proves(B)) return true;
+ if (Env.proves(Env.arena().makeNot(B))) return false;
return std::nullopt;
}
diff --git a/nullability/pointer_nullability_test.cc b/nullability/pointer_nullability_test.cc
index 9060082..ffe1f22 100644
--- a/nullability/pointer_nullability_test.cc
+++ b/nullability/pointer_nullability_test.cc
@@ -49,7 +49,7 @@
EXPECT_TRUE(isNullable(NullableButNotNull, Env));
auto *IsNull = getPointerNullState(NullableButNotNull).IsNull;
ASSERT_NE(IsNull, nullptr);
- Env.addToFlowCondition(A.makeNot(*IsNull));
+ Env.assume(A.makeNot(*IsNull));
EXPECT_FALSE(isNullable(NullableButNotNull, Env));
}
@@ -57,7 +57,7 @@
auto &NullableAndNull = makePointer(NullabilityKind::Nullable);
auto *IsNull = getPointerNullState(NullableAndNull).IsNull;
ASSERT_NE(IsNull, nullptr);
- Env.addToFlowCondition(*IsNull);
+ Env.assume(*IsNull);
EXPECT_TRUE(isNullable(NullableAndNull, Env));
}
@@ -66,7 +66,7 @@
EXPECT_FALSE(isNullable(NonnullAndNotNull, Env));
auto *IsNull = getPointerNullState(NonnullAndNotNull).IsNull;
ASSERT_NE(IsNull, nullptr);
- Env.addToFlowCondition(A.makeNot(*IsNull));
+ Env.assume(A.makeNot(*IsNull));
EXPECT_FALSE(isNullable(NonnullAndNotNull, Env));
}
@@ -77,7 +77,7 @@
auto &NonnullAndNull = makePointer(NullabilityKind::NonNull);
auto *IsNull = getPointerNullState(NonnullAndNull).IsNull;
ASSERT_NE(IsNull, nullptr);
- Env.addToFlowCondition(*IsNull);
+ Env.assume(*IsNull);
EXPECT_FALSE(isNullable(NonnullAndNull, Env));
}
}