5
5
// REQUIRES: CPU=x86_64
6
6
// REQUIRES: objc_interop
7
7
8
+ // rdar://76863553
9
+ // UNSUPPORTED: OS=watchos && CPU=x86_64
10
+
8
11
import ObjectiveC
9
12
import Foundation
10
13
import gizmo
@@ -16,59 +19,70 @@ import gizmo
16
19
// CHECK-macosx: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
17
20
// CHECK-ios: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
18
21
// CHECK-tvos: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
22
+ // CHECK-watchos: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
19
23
20
24
@objc class Methods {
21
25
@objc func testSizedUnsignedTypes( _ a: UInt8 , b: UInt16 , c: UInt32 , d: UInt64 ) { }
22
26
// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
23
27
// CHECK-ios: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
24
28
// CHECK-tvos: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
29
+ // CHECK-watchos: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
25
30
26
31
@objc func testSizedFloats( _ a: Float32 , b: Float64 ) { }
27
32
// CHECK-macosx: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
28
33
// CHECK-ios: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
29
34
// CHECK-tvos: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
35
+ // CHECK-watchos: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
30
36
31
37
@objc func testParens( _ a: ( ( Int ) ) ) { }
32
38
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
33
39
// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
34
40
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
41
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
35
42
36
43
@objc func testPrimitives( _ b: CBool , i: Int , f: Float , d: Double )
37
44
-> OpaquePointer { fatalError ( ) }
38
45
// CHECK-macosx: private unnamed_addr constant [21 x i8] c"^v40@0:8c16q20f28d32\00"
39
46
// CHECK-ios: private unnamed_addr constant [21 x i8] c"^v40@0:8B16q20f28d32\00"
40
47
// CHECK-tvos: private unnamed_addr constant [21 x i8] c"^v40@0:8B16q20f28d32\00"
48
+ // CHECK-watchos: private unnamed_addr constant [21 x i8] c"^v40@0:8B16q20f28d32\00"
41
49
42
50
@objc func testOptionalPrimitives( )
43
51
-> OpaquePointer ? { return nil }
44
52
// CHECK-macosx: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
45
53
// CHECK-ios: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
46
54
// CHECK-tvos: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
55
+ // CHECK-watchos: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
47
56
48
57
@objc func testCSignedTypes( _ a: CSignedChar , b: CShort , c: CInt , d: CLong , e: CLongLong ) { }
49
58
// CHECK-macosx: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
50
59
// CHECK-ios: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
51
60
// CHECK-tvos: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
61
+ // CHECK-watchos: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
52
62
53
63
@objc func testCUnsignedTypes( _ a: CUnsignedChar , b: CUnsignedShort , c: CUnsignedInt , d: CUnsignedLong , e: CUnsignedLongLong ) { }
54
64
// CHECK-macosx: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
55
65
// CHECK-ios: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
56
66
// CHECK-tvos: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
67
+ // CHECK-watchos: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
57
68
58
69
@objc func testCChars( _ basic: CChar , wchar wide: CWideChar , char16: CChar16 , char32: CChar32 ) { }
59
70
// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
60
71
// CHECK-ios: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
61
72
// CHECK-tvos: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
73
+ // CHECK-watchos: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
62
74
63
75
@objc func testCBool( _ a: CBool ) { }
64
76
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v20@0:8c16\00"
65
77
// CHECK-ios: private unnamed_addr constant [11 x i8] c"v20@0:8B16\00"
66
78
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"v20@0:8B16\00"
79
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"v20@0:8B16\00"
67
80
68
81
@objc func testSizedSignedTypes( _ a: Int8 , b: Int16 , c: Int32 , d: Int64 ) { }
69
82
// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
70
83
// CHECK-ios: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
71
84
// CHECK-tvos: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
85
+ // CHECK-watchos: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
72
86
73
87
@objc class func getSelf( ) -> Methods . Type { return self }
74
88
// These strings are required for another purpose and so are tested above.
@@ -77,61 +91,72 @@ import gizmo
77
91
// CHECK-macosx: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
78
92
// CHECK-ios: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
79
93
// CHECK-tvos: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
94
+ // CHECK-watchos: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
80
95
81
96
@objc func testId( _ s: AnyObject ) -> AnyObject { return self }
82
97
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
83
98
// CHECK-ios: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
84
99
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
100
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
85
101
86
102
@objc func comp1( _ a: P1 & P2 , b: P1 & P2 & P3 ) -> P1 & P2 { return a }
87
103
// CHECK-macosx: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
88
104
// CHECK-ios: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
89
105
// CHECK-tvos: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
106
+ // CHECK-watchos: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
90
107
91
108
@objc func returnsBool( _ b : Bool ) -> Bool { return b }
92
109
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"c20@0:8c16\00"
93
110
// CHECK-ios: private unnamed_addr constant [11 x i8] c"B20@0:8B16\00"
94
111
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"B20@0:8B16\00"
112
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"B20@0:8B16\00"
95
113
96
114
@objc func comp1( _ a: Methods , b: Methods , c: Methods ) -> Methods { return a }
97
115
// CHECK-macosx: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
98
116
// CHECK-ios: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
99
117
// CHECK-tvos: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
118
+ // CHECK-watchos: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
100
119
101
120
@objc func passSelector( _ aSelector : Selector ) { }
102
121
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
103
122
// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
104
123
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
124
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
105
125
106
126
@objc func copyUnsafeMutablePointer( _ p: UnsafeMutablePointer < Int32 > ) -> UnsafeMutablePointer < Int32 > { return p }
107
127
// CHECK-macosx: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
108
128
// CHECK-ios: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
109
129
// CHECK-tvos: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
130
+ // CHECK-watchos: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
110
131
111
132
@objc func copyUnsafeMutablePointerInt( _ p: UnsafeMutablePointer < Int > ) -> UnsafeMutablePointer < Int > { return p }
112
133
// CHECK-macosx: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
113
134
// CHECK-ios: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
114
135
// CHECK-tvos: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
136
+ // CHECK-watchos: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
115
137
116
138
@objc func testArchetype( _ work: P3 ) {
117
139
}
118
140
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
119
141
// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
120
142
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
143
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
121
144
122
145
@objc func foo( _ x: ( Int ) -> Int ) -> Int {
123
146
return 1
124
147
}
125
148
// CHECK-macosx: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
126
149
// CHECK-ios: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
127
150
// CHECK-tvos: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
151
+ // CHECK-watchos: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
128
152
129
153
@objc func returnNSRadixedOptions( ) -> NSRadixedOptions {
130
154
return . octal
131
155
}
132
156
// CHECK-macosx: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
133
157
// CHECK-ios: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
134
158
// CHECK-tvos: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
159
+ // CHECK-watchos: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
135
160
136
161
@objc func returnChoseNSRadixedOptions( _ choice: NSRadixedOptions ) -> NSRadixedOptions {
137
162
switch choice {
@@ -142,6 +167,7 @@ import gizmo
142
167
// CHECK-macosx: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
143
168
// CHECK-ios: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
144
169
// CHECK-tvos: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
170
+ // CHECK-watchos: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
145
171
146
172
@objc func getRawEnumInGizmo( ) -> RawEnumInGizmo {
147
173
return InGizmoTwo
@@ -152,6 +178,8 @@ import gizmo
152
178
// CHECK-ios: i8* getelementptr inbounds ([8 x i8], [8 x i8]* [[ENUMENCODING]], i64 0, i64 0)
153
179
// CHECK-tvos: { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"\01L_selector_data(getRawEnumInGizmo)", i64 0, i64 0),
154
180
// CHECK-tvos: i8* getelementptr inbounds ([8 x i8], [8 x i8]* [[ENUMENCODING]], i64 0, i64 0)
181
+ // CHECK-watchos: { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"\01L_selector_data(getRawEnumInGizmo)", i64 0, i64 0),
182
+ // CHECK-watchos: i8* getelementptr inbounds ([8 x i8], [8 x i8]* [[ENUMENCODING]], i64 0, i64 0)
155
183
156
184
}
157
185
@@ -182,6 +210,11 @@ import gizmo
182
210
// CHECK-tvos: [[ENC3:@.*]] = private unnamed_addr constant [53 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject\2216\00"
183
211
// CHECK-tvos: [[ENC4:@.*]] = private unnamed_addr constant [75 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject<NSFunging><NSRuncing>\2216\00"
184
212
// CHECK-tvos: @_PROTOCOL_METHOD_TYPES__TtP18objc_type_encoding10MyProtocol_ = internal constant [4 x i8*] [i8* getelementptr inbounds ([35 x i8], [35 x i8]* [[ENC1]], i64 0, i64 0), i8* getelementptr inbounds ([46 x i8], [46 x i8]* [[ENC2]], i64 0, i64 0), i8* getelementptr inbounds ([53 x i8], [53 x i8]* [[ENC3]], i64 0, i64 0), i8* getelementptr inbounds ([75 x i8], [75 x i8]* [[ENC4]], i64 0, i64 0)]
213
+ // CHECK-watchos: [[ENC1:@.*]] = private unnamed_addr constant [35 x i8] c"v24@0:8@\22<NSFunging><NSRuncing>\2216\00"
214
+ // CHECK-watchos: [[ENC2:@.*]] = private unnamed_addr constant [46 x i8] c"v32@0:8@\22Gizmo\2216@?<v@?@\22NSView\22@\22NSSpoon\22>24\00"
215
+ // CHECK-watchos: [[ENC3:@.*]] = private unnamed_addr constant [53 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject\2216\00"
216
+ // CHECK-watchos: [[ENC4:@.*]] = private unnamed_addr constant [75 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject<NSFunging><NSRuncing>\2216\00"
217
+ // CHECK-watchos: @_PROTOCOL_METHOD_TYPES__TtP18objc_type_encoding10MyProtocol_ = internal constant [4 x i8*] [i8* getelementptr inbounds ([35 x i8], [35 x i8]* [[ENC1]], i64 0, i64 0), i8* getelementptr inbounds ([46 x i8], [46 x i8]* [[ENC2]], i64 0, i64 0), i8* getelementptr inbounds ([53 x i8], [53 x i8]* [[ENC3]], i64 0, i64 0), i8* getelementptr inbounds ([75 x i8], [75 x i8]* [[ENC4]], i64 0, i64 0)]
185
218
186
219
class C : P {
187
220
func stuff( ) { }
0 commit comments