Skip to content

Commit cf6b7cb

Browse files
authored
Merge pull request swiftlang#68530 from kubamracek/embedded-no-objc
[embedded] Disable Objective-C interop in embedded Swift
2 parents a559d24 + 37160df commit cf6b7cb

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

include/swift/AST/DiagnosticsFrontend.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,8 @@ ERROR(evolution_with_embedded,none,
558558
"Library evolution cannot be enabled with embedded Swift.", ())
559559
ERROR(wmo_with_embedded,none,
560560
"Whole module optimization (wmo) must be enabled with embedded Swift.", ())
561+
ERROR(objc_with_embedded,none,
562+
"Objective-C interoperability cannot be enabled with embedded Swift.", ())
561563

562564
#define UNDEFINE_DIAGNOSTIC_MACROS
563565
#include "DefineDiagnosticMacros.h"

lib/Frontend/CompilerInvocation.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,7 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
10971097

10981098
Opts.EnableObjCInterop =
10991099
Args.hasFlag(OPT_enable_objc_interop, OPT_disable_objc_interop,
1100-
Target.isOSDarwin());
1100+
Target.isOSDarwin() && !Opts.hasFeature(Feature::Embedded));
11011101

11021102
Opts.CForeignReferenceTypes =
11031103
Args.hasArg(OPT_experimental_c_foreign_reference_types);
@@ -1325,7 +1325,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
13251325
Opts.UnavailableDeclOptimizationMode = UnavailableDeclOptimization::Complete;
13261326
Opts.DisableImplicitStringProcessingModuleImport = true;
13271327
Opts.DisableImplicitConcurrencyModuleImport = true;
1328-
Opts.EnableObjCInterop = false;
13291328

13301329
if (FrontendOpts.EnableLibraryEvolution) {
13311330
Diags.diagnose(SourceLoc(), diag::evolution_with_embedded);
@@ -1336,6 +1335,11 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
13361335
Diags.diagnose(SourceLoc(), diag::wmo_with_embedded);
13371336
HadError = true;
13381337
}
1338+
1339+
if (Opts.EnableObjCInterop) {
1340+
Diags.diagnose(SourceLoc(), diag::objc_with_embedded);
1341+
HadError = true;
1342+
}
13391343
}
13401344

13411345
if (auto A = Args.getLastArg(OPT_checked_async_objc_bridging)) {
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// RUN: %target-swift-frontend -parse-stdlib -target arm64-apple-macos11 -emit-ir %s -enable-experimental-feature Embedded
2+
// RUN: %target-swift-frontend -parse-stdlib -target arm64-apple-none -emit-ir %s -enable-experimental-feature Embedded
3+
// RUN: %target-swift-frontend -parse-stdlib -target arm64-apple-none-macho -emit-ir %s -enable-experimental-feature Embedded
4+
// RUN: not %target-swift-frontend -parse-stdlib -target arm64-apple-macos11 -emit-ir %s -enable-objc-interop -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
5+
// RUN: %target-swift-frontend -parse-stdlib -target arm64-apple-macos11 -emit-ir %s -disable-objc-interop -enable-experimental-feature Embedded
6+
7+
// CHECK: error: Objective-C interoperability cannot be enabled with embedded Swift.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// RUN: %target-swift-frontend -typecheck -parse-stdlib %s -enable-experimental-feature Embedded
22
// RUN: not %target-swift-frontend -typecheck -parse-stdlib %s -primary-file %s -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
33

4-
// RUN: %target-swiftc_driver -typecheck -parse-stdlib %s -enable-experimental-feature Embedded -wmo
5-
// RUN: not %target-swiftc_driver -typecheck -parse-stdlib %s -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
4+
// RUN: %target-swiftc_driver -typecheck -parse-stdlib %s -Xfrontend -disable-objc-interop -enable-experimental-feature Embedded -wmo
5+
// RUN: not %target-swiftc_driver -typecheck -parse-stdlib %s -Xfrontend -disable-objc-interop -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
66

77
// CHECK: error: Whole module optimization (wmo) must be enabled with embedded Swift.

0 commit comments

Comments
 (0)