Consumed Analysis: Change callable_when so that it can take a list of states
that a function can be called in. This reduced the total number of annotations
needed and makes writing more complicated behaviour less burdensome.
Patch by chriswails@gmail.com.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@191983 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/AnalysisBasedWarnings.cpp b/lib/Sema/AnalysisBasedWarnings.cpp
index cc1cb0b..a206acd 100644
--- a/lib/Sema/AnalysisBasedWarnings.cpp
+++ b/lib/Sema/AnalysisBasedWarnings.cpp
@@ -1503,36 +1503,20 @@
Warnings.push_back(DelayedDiag(Warning, OptionalNotes()));
}
- void warnUseOfTempWhileConsumed(StringRef MethodName, SourceLocation Loc) {
+ void warnUseOfTempInInvalidState(StringRef MethodName, StringRef State,
+ SourceLocation Loc) {
PartialDiagnosticAt Warning(Loc, S.PDiag(
- diag::warn_use_of_temp_while_consumed) << MethodName);
+ diag::warn_use_of_temp_in_invalid_state) << MethodName << State);
Warnings.push_back(DelayedDiag(Warning, OptionalNotes()));
}
- void warnUseOfTempInUnknownState(StringRef MethodName, SourceLocation Loc) {
+ void warnUseInInvalidState(StringRef MethodName, StringRef VariableName,
+ StringRef State, SourceLocation Loc) {
- PartialDiagnosticAt Warning(Loc, S.PDiag(
- diag::warn_use_of_temp_in_unknown_state) << MethodName);
-
- Warnings.push_back(DelayedDiag(Warning, OptionalNotes()));
- }
-
- void warnUseWhileConsumed(StringRef MethodName, StringRef VariableName,
- SourceLocation Loc) {
-
- PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_while_consumed) <<
- MethodName << VariableName);
-
- Warnings.push_back(DelayedDiag(Warning, OptionalNotes()));
- }
-
- void warnUseInUnknownState(StringRef MethodName, StringRef VariableName,
- SourceLocation Loc) {
-
- PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_in_unknown_state) <<
- MethodName << VariableName);
+ PartialDiagnosticAt Warning(Loc, S.PDiag(diag::warn_use_in_invalid_state) <<
+ MethodName << VariableName << State);
Warnings.push_back(DelayedDiag(Warning, OptionalNotes()));
}
@@ -1570,7 +1554,7 @@
(D.getDiagnosticLevel(diag::warn_double_lock, SourceLocation()) !=
DiagnosticsEngine::Ignored);
DefaultPolicy.enableConsumedAnalysis = (unsigned)
- (D.getDiagnosticLevel(diag::warn_use_while_consumed, SourceLocation()) !=
+ (D.getDiagnosticLevel(diag::warn_use_in_invalid_state, SourceLocation()) !=
DiagnosticsEngine::Ignored);
}