Skip to content

Commit 0e214f3

Browse files
committed
[Frontend] Switch to -validate-tbd-against-ir=missing by default.
A validation failure now includes a note about how to turn it off, for when there's TBD bugs that block someone's work.
1 parent 994121e commit 0e214f3

File tree

8 files changed

+22
-5
lines changed

8 files changed

+22
-5
lines changed

include/swift/AST/DiagnosticsFrontend.def

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,11 @@ ERROR(symbol_in_ir_not_in_tbd,none,
194194
"symbol '%0' (%1) is in generated IR file, but not in TBD file",
195195
(StringRef, StringRef))
196196

197+
NOTE(pass_validate_tbd_against_ir_none,none,
198+
"please file a bug including this code as a test case, and consider adding "
199+
"'-Xfrontend -validate-tbd-against-ir=none' to the Swift compiler options to "
200+
"silence this error", ())
201+
197202
ERROR(invalid_conditional_compilation_flag,none,
198203
"conditional compilation flags must be valid Swift identifiers (rather than '%0')",
199204
(StringRef))

include/swift/Frontend/FrontendOptions.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ class FrontendOptions {
291291
};
292292

293293
/// Compare the symbols in the IR against the TBD file we would generate.
294-
TBDValidationMode ValidateTBDAgainstIR = TBDValidationMode::None;
294+
TBDValidationMode ValidateTBDAgainstIR = TBDValidationMode::MissingFromTBD;
295295

296296
/// An enum with different modes for automatically crashing at defined times.
297297
enum class DebugCrashMode {

lib/FrontendTool/FrontendTool.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -974,6 +974,12 @@ static bool performCompile(CompilerInstance &Instance,
974974
break;
975975

976976
const auto &silOpts = Invocation.getSILOptions();
977+
978+
// -sil-serialize-all is problematic and not what we intend to do long term,
979+
// so we don't try to get the public symbols to line up.
980+
if (silOpts.SILSerializeAll)
981+
break;
982+
977983
auto hasMultipleIRGenThreads = silOpts.NumThreads > 1;
978984
bool error;
979985
if (PrimarySourceFile)

lib/FrontendTool/TBD.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ static bool validateSymbolSet(DiagnosticEngine &diags,
120120
}
121121
}
122122

123+
if (error) {
124+
// Inform the user how to silence this error (and request they file a bug)
125+
// so they can continue working while us compiler folk fix it properly.
126+
diags.diagnose(SourceLoc(), diag::pass_validate_tbd_against_ir_none);
127+
}
128+
123129
return error;
124130
}
125131

test/Migrator/member.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// REQUIRES: objc_interop
2-
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null -validate-tbd-against-ir=none
33
// RUN: diff -u %S/member.swift.expected %t/member.swift.result
44

55
import Bar

test/Migrator/member.swift.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// REQUIRES: objc_interop
2-
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/member.swift.result -emit-remap-file-path %t/member.swift.remap -o /dev/null -validate-tbd-against-ir=none
33
// RUN: diff -u %S/member.swift.expected %t/member.swift.result
44

55
import Bar

test/Migrator/rename.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// REQUIRES: objc_interop
2-
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null -validate-tbd-against-ir=none
33
// RUN: diff -u %S/rename.swift.expected %t/rename.swift.result
44

55
import Bar

test/Migrator/rename.swift.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// REQUIRES: objc_interop
2-
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null
2+
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -F %S/mock-sdk -api-diff-data-file %S/Inputs/API.json -emit-migrated-file-path %t/rename.swift.result -emit-remap-file-path %t/rename.swift.remap -o /dev/null -validate-tbd-against-ir=none
33
// RUN: diff -u %S/rename.swift.expected %t/rename.swift.result
44

55
import Bar

0 commit comments

Comments
 (0)