Skip to content

Commit 7ec861f

Browse files
committed
Enable lazy ClangImporter diagnostics by default
Replace the existing `-enable-experimental-clang-importer-diagnostics` flag with an opt-out version entitled `-disable-experimentalc-clang-importer-diagnostics`. Enable the beviour previously hidden behind the old flag by default.
1 parent 3762ca1 commit 7ec861f

16 files changed

+127
-20
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,8 +328,8 @@ namespace swift {
328328
/// Enable experimental flow-sensitive concurrent captures.
329329
bool EnableExperimentalFlowSensitiveConcurrentCaptures = false;
330330

331-
/// Enable experimental ClangImporter diagnostics.
332-
bool EnableExperimentalClangImporterDiagnostics = false;
331+
/// Disable experimental ClangImporter diagnostics.
332+
bool DisableExperimentalClangImporterDiagnostics = false;
333333

334334
/// Enable experimental eager Clang module diagnostics.
335335
bool EnableExperimentalEagerClangModuleDiagnostics = false;

include/swift/Option/FrontendOptions.td

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,9 @@ def enable_experimental_flow_sensitive_concurrent_captures :
287287
Flag<["-"], "enable-experimental-flow-sensitive-concurrent-captures">,
288288
HelpText<"Enable flow-sensitive concurrent captures">;
289289

290-
def enable_experimental_clang_importer_diagnostics :
291-
Flag<["-"], "enable-experimental-clang-importer-diagnostics">,
292-
HelpText<"Enable experimental diagnostics when importing C, C++, and Objective-C libraries">;
290+
def disable_experimental_clang_importer_diagnostics :
291+
Flag<["-"], "disable-experimental-clang-importer-diagnostics">,
292+
HelpText<"Disable experimental diagnostics when importing C, C++, and Objective-C libraries">;
293293

294294
def enable_experimental_eager_clang_module_diagnostics :
295295
Flag<["-"], "enable-experimental-eager-clang-module-diagnostics">,

lib/ClangImporter/ClangImporter.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,8 +2397,7 @@ void ClangImporter::Implementation::addImportDiagnostic(
23972397
ImportDiagnosticTarget target, Diagnostic &&diag,
23982398
const clang::SourceLocation &loc) {
23992399
ImportDiagnostic importDiag = ImportDiagnostic(target, diag, loc);
2400-
if (!(SwiftContext.LangOpts.EnableExperimentalClangImporterDiagnostics ||
2401-
SwiftContext.LangOpts.EnableExperimentalEagerClangModuleDiagnostics) ||
2400+
if (SwiftContext.LangOpts.DisableExperimentalClangImporterDiagnostics ||
24022401
CollectedDiagnostics.count(importDiag))
24032402
return;
24042403

lib/Frontend/CompilerInvocation.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -470,10 +470,11 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
470470
Opts.EnableExperimentalFlowSensitiveConcurrentCaptures |=
471471
Args.hasArg(OPT_enable_experimental_flow_sensitive_concurrent_captures);
472472

473-
Opts.EnableExperimentalClangImporterDiagnostics |=
474-
Args.hasArg(OPT_enable_experimental_clang_importer_diagnostics);
473+
Opts.DisableExperimentalClangImporterDiagnostics |=
474+
Args.hasArg(OPT_disable_experimental_clang_importer_diagnostics);
475475

476476
Opts.EnableExperimentalEagerClangModuleDiagnostics |=
477+
!Args.hasArg(OPT_disable_experimental_clang_importer_diagnostics) &&
477478
Args.hasArg(OPT_enable_experimental_eager_clang_module_diagnostics);
478479

479480
Opts.DisableImplicitConcurrencyModuleImport |=

lib/Sema/CSDiagnostics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3627,7 +3627,7 @@ bool MissingMemberFailure::diagnoseAsError() {
36273627
.highlight(getSourceRange())
36283628
.highlight(nameLoc.getSourceRange());
36293629
const auto &ctx = getSolution().getDC()->getASTContext();
3630-
if (ctx.LangOpts.EnableExperimentalClangImporterDiagnostics) {
3630+
if (!ctx.LangOpts.DisableExperimentalClangImporterDiagnostics) {
36313631
ctx.getClangModuleLoader()->diagnoseMemberValue(getName().getFullName(),
36323632
baseType);
36333633
}

lib/Sema/PreCheckExpr.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -590,7 +590,7 @@ Expr *TypeChecker::resolveDeclRefExpr(UnresolvedDeclRefExpr *UDRE,
590590
.diagnose(Loc, diag::cannot_find_in_scope, Name,
591591
Name.isOperator())
592592
.highlight(UDRE->getSourceRange());
593-
if (Context.LangOpts.EnableExperimentalClangImporterDiagnostics) {
593+
if (!Context.LangOpts.DisableExperimentalClangImporterDiagnostics) {
594594
Context.getClangModuleLoader()->diagnoseTopLevelValue(
595595
Name.getFullName());
596596
}

test/ClangImporter/experimental_clang_importer_diagnostics_bridging_header.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend -enable-experimental-clang-importer-diagnostics -enable-objc-interop -import-objc-header %S/Inputs/experimental_clang_importer_diagnostics_bridging_header.h -typecheck %s 2>&1 | %FileCheck %s
1+
// RUN: not %target-swift-frontend -enable-objc-interop -import-objc-header %S/Inputs/experimental_clang_importer_diagnostics_bridging_header.h -typecheck %s 2>&1 | %FileCheck %s
22

33
let s: PartialImport
44
s.c = 5

test/ClangImporter/experimental_diagnostics_cfuncs.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-clang-importer-diagnostics -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
1+
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
22

33
import cfuncs
44

test/ClangImporter/experimental_diagnostics_cmacros.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-clang-importer-diagnostics -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
1+
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
22

33
import macros
44

@@ -13,7 +13,6 @@ _ = INVALID_INTEGER_LITERAL_2
1313
// CHECK-NEXT: #define INVALID_INTEGER_LITERAL_2 10abc
1414
// CHECK-NEXT: {{^}} ^
1515

16-
1716
_ = FUNC_LIKE_MACRO()
1817
// CHECK: experimental_diagnostics_cmacros.swift:{{[0-9]+}}:{{[0-9]+}}: error: cannot find 'FUNC_LIKE_MACRO' in scope
1918
// CHECK-NEXT: _ = FUNC_LIKE_MACRO()

test/ClangImporter/experimental_diagnostics_cstructs.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-experimental-clang-importer-diagnostics -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
1+
// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck %s 2>&1 | %FileCheck %s --strict-whitespace
22

33
import ctypes
44

0 commit comments

Comments
 (0)