Skip to content

Commit 62d388a

Browse files
authored
Merge pull request #84435 from egorzhdan/egorzhdan/do-not-generate-interface-twice
[cxx-interop] Avoid trying to generate module interfaces twice
2 parents 1d4b451 + a610bcd commit 62d388a

File tree

3 files changed

+7
-22
lines changed

3 files changed

+7
-22
lines changed

test/SourceKit/InterfaceGen/gen_clang_cxx_module.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
// RUN: %empty-directory(%t)
22
// RUN: split-file %s %t
33

4-
// RUN: %sourcekitd-test -req=interface-gen -module CxxModule -- -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -I %t/Inputs -target %target-triple %clang-importer-sdk-nosource | %FileCheck %s
4+
// The interface should fail to generate with C++ interop disabled:
5+
// RUN: not %sourcekitd-test -req=interface-gen -module CxxModule -- -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -I %t/Inputs -target %target-triple %clang-importer-sdk-nosource
6+
7+
// With C++ interop enabled, it should succeed:
58
// RUN: %sourcekitd-test -req=interface-gen -module CxxModule -- -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -cxx-interoperability-mode=default -I %t/Inputs -target %target-triple %clang-importer-sdk-nosource | %FileCheck %s
69

710

test/SourceKit/InterfaceGen/gen_clang_mixed_lang_fmwk_cxx_module.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
// RUN: %target-swift-frontend -emit-module %t/TestFmSwift.swift -module-name TestFm -enable-experimental-cxx-interop -F %t -o %t/TestFm.swiftmodule -import-underlying-module
55

6-
// RUN: %sourcekitd-test -req=interface-gen -module TestFm -- -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -I %t -target %target-triple %clang-importer-sdk-nosource | %FileCheck %s
6+
// RUN: %sourcekitd-test -req=interface-gen -module TestFm -- -cxx-interoperability-mode=default -Xfrontend -disable-implicit-concurrency-module-import -Xfrontend -disable-implicit-string-processing-module-import -I %t -target %target-triple %clang-importer-sdk-nosource | %FileCheck %s
77

88
//--- TestFm.framework/Headers/TestFm.h
99
#pragma once

tools/SourceKit/lib/SwiftLang/SwiftEditorInterfaceGen.cpp

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -790,26 +790,8 @@ void SwiftLangSupport::editorOpenInterface(
790790
SynthesizedExtensions,
791791
InterestedUSR);
792792
if (!IFaceGenRef) {
793-
// Retry to generate a module interface with C++ interop enabled,
794-
// if the first attempt failed.
795-
bool retryWithCxxEnabled = true;
796-
for (const auto &arg: Args) {
797-
if (StringRef(arg).starts_with("-cxx-interoperability-mode=") ||
798-
StringRef(arg).starts_with("-enable-experimental-cxx-interop")) {
799-
retryWithCxxEnabled = false;
800-
break;
801-
}
802-
}
803-
if (retryWithCxxEnabled) {
804-
std::vector<const char *> AdjustedArgs(Args.begin(), Args.end());
805-
AdjustedArgs.push_back("-cxx-interoperability-mode=default");
806-
return editorOpenInterface(Consumer, Name, ModuleName, Group, AdjustedArgs,
807-
SynthesizedExtensions, InterestedUSR);
808-
}
809-
else {
810-
Consumer.handleRequestError(ErrMsg.c_str());
811-
return;
812-
}
793+
Consumer.handleRequestError(ErrMsg.c_str());
794+
return;
813795
}
814796

815797
IFaceGenRef->reportEditorInfo(Consumer);

0 commit comments

Comments
 (0)