Skip to content

Commit 78be31c

Browse files
committed
[embedded] Disable Objective-C interop in embedded Swift
1 parent fca24bd commit 78be31c

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,7 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
10951095

10961096
Opts.EnableObjCInterop =
10971097
Args.hasFlag(OPT_enable_objc_interop, OPT_disable_objc_interop,
1098-
Target.isOSDarwin());
1098+
Target.isOSDarwin() && !Opts.hasFeature(Feature::Embedded));
10991099

11001100
Opts.CForeignReferenceTypes =
11011101
Args.hasArg(OPT_experimental_c_foreign_reference_types);
@@ -1334,6 +1334,11 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
13341334
Diags.diagnose(SourceLoc(), diag::wmo_with_embedded);
13351335
HadError = true;
13361336
}
1337+
1338+
if (Opts.EnableObjCInterop) {
1339+
Diags.diagnose(SourceLoc(), diag::objc_with_embedded);
1340+
HadError = true;
1341+
}
13371342
}
13381343

13391344
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.

0 commit comments

Comments
 (0)