Skip to content

Commit 874172b

Browse files
authored
Merge pull request #59677 from WANGJIEKE/cxx-interop-small-enum-test-fix
[Interop][SwiftToCxx] Fix small enum tests
2 parents 56ae0f3 + b572180 commit 874172b

File tree

2 files changed

+34
-16
lines changed

2 files changed

+34
-16
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %target-swift-frontend %s -typecheck -module-name Enums -clang-header-expose-public-decls -emit-clang-header-path %t/enums.h
3+
// RUN: %FileCheck %s < %t/enums.h
4+
5+
// RUN: %check-interop-cxx-header-in-clang(%t/enums.h -Wno-unused-private-field -Wno-unused-function)
6+
7+
// REQUIRES: PTRSIZE=64
8+
9+
public enum Small {
10+
case first(Int)
11+
case second(Double)
12+
}
13+
14+
public func passThroughSmall(_ en: Small) -> Small {
15+
return en
16+
}
17+
18+
// CHECK: struct swift_interop_stub_Enums_Small {
19+
// CHECK-NEXT: uint64_t _1;
20+
// CHECK-NEXT: uint8_t _2;
21+
// CHECK-NEXT: };
22+
23+
// CHECK: static inline void swift_interop_returnDirect_Enums_Small(char * _Nonnull result, struct swift_interop_stub_Enums_Small value) __attribute__((always_inline)) {
24+
// CHECK-NEXT: memcpy(result + 0, &value._1, 8);
25+
// CHECK-NEXT: memcpy(result + 8, &value._2, 1);
26+
// CHECK-NEXT: }
27+
28+
// CHECK: static inline struct swift_interop_stub_Enums_Small swift_interop_passDirect_Enums_Small(const char * _Nonnull value) __attribute__((always_inline)) {
29+
// CHECK-NEXT: struct swift_interop_stub_Enums_Small result;
30+
// CHECK-NEXT: memcpy(&result._1, value + 0, 8);
31+
// CHECK-NEXT: memcpy(&result._2, value + 8, 1);
32+
// CHECK-NEXT: return result;
33+
// CHECK-NEXT: }

test/Interop/SwiftToCxx/enums/small-enums-pass-return-in-cxx.swift

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,22 +67,7 @@ public func inoutSmall(_ en: inout Small, _ x: Int) {
6767
// CHECK: SWIFT_EXTERN void $s5Enums10inoutSmallyyAA0C0Oz_SitF(char * _Nonnull en, ptrdiff_t x) SWIFT_NOEXCEPT SWIFT_CALL; // inoutSmall(_:_:)
6868
// CHECK: SWIFT_EXTERN void $s5Enums9inoutTinyyyAA0C0Oz_SitF(char * _Nonnull en, ptrdiff_t x) SWIFT_NOEXCEPT SWIFT_CALL; // inoutTiny(_:_:)
6969

70-
// CHECK: struct swift_interop_stub_Enums_Small {
71-
// CHECK-NEXT: uint64_t _1;
72-
// CHECK-NEXT: uint8_t _2;
73-
// CHECK-NEXT: };
74-
75-
// CHECK: static inline void swift_interop_returnDirect_Enums_Small(char * _Nonnull result, struct swift_interop_stub_Enums_Small value) __attribute__((always_inline)) {
76-
// CHECK-NEXT: memcpy(result + 0, &value._1, 8);
77-
// CHECK-NEXT: memcpy(result + 8, &value._2, 1);
78-
// CHECK-NEXT: }
79-
80-
// CHECK: static inline struct swift_interop_stub_Enums_Small swift_interop_passDirect_Enums_Small(const char * _Nonnull value) __attribute__((always_inline)) {
81-
// CHECK-NEXT: struct swift_interop_stub_Enums_Small result;
82-
// CHECK-NEXT: memcpy(&result._1, value + 0, 8);
83-
// CHECK-NEXT: memcpy(&result._2, value + 8, 1);
84-
// CHECK-NEXT: return result;
85-
// CHECK-NEXT: }
70+
// The check for generated stub is currently moved to small-enums-generated-stub-64bit.swift
8671

8772
// CHECK: SWIFT_EXTERN struct swift_interop_stub_Enums_Small $s5Enums9makeSmallyAA0C0OSiF(ptrdiff_t x) SWIFT_NOEXCEPT SWIFT_CALL; // makeSmall(_:)
8873

0 commit comments

Comments
 (0)