Skip to content

Commit 42ffbe4

Browse files
committed
ABIChecker: add an internal setting for downgrading ABI breakages to warnings
1 parent 0c214fe commit 42ffbe4

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

include/swift/APIDigester/ModuleDiagsConsumer.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,15 @@ class FilteringDiagnosticConsumer: public DiagnosticConsumer {
4646
bool HasError = false;
4747
std::vector<std::unique_ptr<DiagnosticConsumer>> subConsumers;
4848
std::unique_ptr<llvm::StringSet<>> allowedBreakages;
49+
bool DowngradeToWarning;
4950
bool shouldProceed(const DiagnosticInfo &Info);
5051
public:
5152
FilteringDiagnosticConsumer(std::vector<std::unique_ptr<DiagnosticConsumer>> subConsumers,
52-
std::unique_ptr<llvm::StringSet<>> allowedBreakages):
53+
std::unique_ptr<llvm::StringSet<>> allowedBreakages,
54+
bool DowngradeToWarning):
5355
subConsumers(std::move(subConsumers)),
54-
allowedBreakages(std::move(allowedBreakages)) {}
56+
allowedBreakages(std::move(allowedBreakages)),
57+
DowngradeToWarning(DowngradeToWarning) {}
5558
~FilteringDiagnosticConsumer() = default;
5659

5760
void flush() override;

lib/APIDigester/ModuleDiagsConsumer.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,12 @@ bool swift::ide::api::FilteringDiagnosticConsumer::shouldProceed(const Diagnosti
159159

160160
void swift::ide::api::
161161
FilteringDiagnosticConsumer::handleDiagnostic(SourceManager &SM,
162-
const DiagnosticInfo &Info) {
163-
if (shouldProceed(Info)) {
162+
const DiagnosticInfo &RawInfo) {
163+
if (shouldProceed(RawInfo)) {
164+
DiagnosticInfo Info = RawInfo;
165+
if (DowngradeToWarning && Info.Kind == DiagnosticKind::Error) {
166+
Info.Kind = DiagnosticKind::Warning;
167+
}
164168
if (Info.Kind == DiagnosticKind::Error) {
165169
HasError = true;
166170
}

lib/DriverTool/swift_api_digester_main.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1932,7 +1932,8 @@ static int diagnoseModuleChange(SDKContext &Ctx, SDKNodeRoot *LeftModule,
19321932
auto pConsumer = std::make_unique<FilteringDiagnosticConsumer>(
19331933
createDiagConsumer(*OS, FailOnError, DisableFailOnError, CompilerStyleDiags,
19341934
SerializedDiagPath),
1935-
std::move(allowedBreakages));
1935+
std::move(allowedBreakages),
1936+
/*DowngradeToWarning*/false);
19361937
SWIFT_DEFER { pConsumer->finishProcessing(); };
19371938
Ctx.addDiagConsumer(*pConsumer);
19381939
Ctx.setCommonVersion(std::min(LeftModule->getJsonFormatVersion(),

0 commit comments

Comments
 (0)