File tree Expand file tree Collapse file tree 4 files changed +47
-11
lines changed
test/Interop/SwiftToCxx/functions Expand file tree Collapse file tree 4 files changed +47
-11
lines changed Original file line number Diff line number Diff line change @@ -1110,9 +1110,9 @@ class DeclAndTypePrinter::Implementation
1110
1110
1111
1111
void visitFuncDecl (FuncDecl *FD) {
1112
1112
if (outputLang == OutputLanguageMode::Cxx) {
1113
- // Don't expose async functions or transparent functions
1113
+ // Don't expose async functions or @_alwaysEmitIntoClient functions
1114
1114
// because they're currently unsupported
1115
- if (FD->hasAsync () || FD->isTransparent ()) {
1115
+ if (FD->hasAsync () || FD->getAttrs (). hasAttribute <AlwaysEmitIntoClientAttr> ()) {
1116
1116
return ;
1117
1117
}
1118
1118
Original file line number Diff line number Diff line change 4
4
5
5
// RUN: %check-interop-cxx-header-in-clang(%t/functions.h)
6
6
7
- // CHECK-NOT: SWIFT_EXTERN double $s9Functions10async_funcyS2dYaF(double x) SWIFT_NOEXCEPT SWIFT_CALL; // async_func (_:)
8
- // CHECK-NOT: SWIFT_EXTERN bool $s9Functions16transparent_funcyS2bF(bool x) SWIFT_NOEXCEPT SWIFT_CALL; // transparent_func (_:)
7
+ // CHECK-NOT: SWIFT_EXTERN bool $s9Functions24alwaysEmitIntoClientFuncyS2bF(bool x) SWIFT_NOEXCEPT SWIFT_CALL; // alwaysEmitIntoClientFunc (_:)
8
+ // CHECK-NOT: SWIFT_EXTERN double $s9Functions9asyncFuncyS2dYaF(double x) SWIFT_NOEXCEPT SWIFT_CALL; // asyncFunc (_:)
9
9
10
10
// CHECK: namespace Functions {
11
11
// CHECK-EMPTY:
16
16
// CHECK-EMPTY:
17
17
// CHECK-NEXT: } // namespace Functions
18
18
19
- // CHECK-NOT: inline double async_func(double x) noexcept SWIFT_WARN_UNUSED_RESULT {
20
- // CHECK-NOT: return _impl::$s9Functions10async_funcyS2dYaF (x);
19
+ // CHECK-NOT: inline bool alwaysEmitIntoClientFunc(bool x) noexcept SWIFT_WARN_UNUSED_RESULT {
20
+ // CHECK-NOT: return _impl::$s9Functions24alwaysEmitIntoClientFuncyS2bF (x);
21
21
// CHECK-NOT: }
22
22
23
- // CHECK-NOT: inline bool transparent_func(bool x) noexcept SWIFT_WARN_UNUSED_RESULT {
24
- // CHECK-NOT: return _impl::$s9Functions16transparent_funcyS2bF (x);
23
+ // CHECK-NOT: inline double asyncFunc(double x) noexcept SWIFT_WARN_UNUSED_RESULT {
24
+ // CHECK-NOT: return _impl::$s9Functions9asyncFuncyS2dYaF (x);
25
25
// CHECK-NOT: }
26
26
27
- public func async_func ( _ x: Double ) async -> Double { return 2 * x }
27
+ public func asyncFunc ( _ x: Double ) async -> Double { return 2 * x }
28
28
29
- @_transparent
30
- public func transparent_func ( _ x: Bool ) -> Bool { return !x }
29
+ @_alwaysEmitIntoClient
30
+ public func alwaysEmitIntoClientFunc ( _ x: Bool ) -> Bool { return !x }
Original file line number Diff line number Diff line change
1
+ // RUN: %empty-directory(%t)
2
+ // RUN: %target-swift-frontend %s -typecheck -module-name Functions -clang-header-expose-public-decls -emit-clang-header-path %t/functions.h
3
+ // RUN: %FileCheck %s < %t/functions.h
4
+
5
+ // RUN: %check-interop-cxx-header-in-clang(%t/functions.h)
6
+
7
+ // CHECK: SWIFT_EXTERN ptrdiff_t $s9Functions24transparentPrimitiveFuncyS2iF(ptrdiff_t x) SWIFT_NOEXCEPT SWIFT_CALL; // transparentPrimitiveFunc(_:)
8
+
9
+ // CHECK: inline swift::Int transparentPrimitiveFunc(swift::Int x) noexcept SWIFT_WARN_UNUSED_RESULT {
10
+ // CHECK-NEXT: return _impl::$s9Functions24transparentPrimitiveFuncyS2iF(x);
11
+ // CHECK-NEXT: }
12
+
13
+ @_transparent
14
+ public func transparentPrimitiveFunc( _ x: Int ) -> Int { return x * x }
Original file line number Diff line number Diff line change
1
+ // RUN: %empty-directory(%t)
2
+
3
+ // RUN: %target-swift-frontend %S/swift-transparent-functions-cxx-bridging.swift -typecheck -module-name Functions -clang-header-expose-public-decls -emit-clang-header-path %t/functions.h
4
+
5
+ // RUN: %target-interop-build-clangxx -c %s -I %t -o %t/swift-functions-execution.o
6
+ // RUN: %target-interop-build-swift %S/swift-transparent-functions-cxx-bridging.swift -o %t/swift-functions-execution -Xlinker %t/swift-functions-execution.o -module-name Functions -Xfrontend -entry-point-function-name -Xfrontend swiftMain
7
+
8
+ // RUN: %target-codesign %t/swift-functions-execution
9
+ // RUN: %target-run %t/swift-functions-execution
10
+
11
+ // REQUIRES: executable_test
12
+
13
+ #include < cassert>
14
+ #include " functions.h"
15
+
16
+ int main () {
17
+ using namespace Functions ;
18
+
19
+ assert (transparentPrimitiveFunc (12 ) == 144 );
20
+
21
+ return 0 ;
22
+ }
You can’t perform that action at this time.
0 commit comments