55// REQUIRES: CPU=x86_64
66// REQUIRES: objc_interop
77
8+ // rdar://76863553
9+ // UNSUPPORTED: OS=watchos && CPU=x86_64
10+
811import ObjectiveC
912import Foundation
1013import gizmo
@@ -16,59 +19,70 @@ import gizmo
1619// CHECK-macosx: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
1720// CHECK-ios: private unnamed_addr constant [8 x i8] c"#16@0:8\00"
1821// 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"
1923
2024@objc class Methods {
2125 @objc func testSizedUnsignedTypes( _ a: UInt8 , b: UInt16 , c: UInt32 , d: UInt64 ) { }
2226// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
2327// CHECK-ios: private unnamed_addr constant [20 x i8] c"v36@0:8C16S20I24Q28\00"
2428// 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"
2530
2631 @objc func testSizedFloats( _ a: Float32 , b: Float64 ) { }
2732// CHECK-macosx: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
2833// CHECK-ios: private unnamed_addr constant [14 x i8] c"v28@0:8f16d20\00"
2934// 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"
3036
3137 @objc func testParens( _ a: ( ( Int ) ) ) { }
3238// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
3339// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8q16\00"
3440// 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"
3542
3643 @objc func testPrimitives( _ b: CBool , i: Int , f: Float , d: Double )
3744 -> OpaquePointer { fatalError ( ) }
3845// CHECK-macosx: private unnamed_addr constant [21 x i8] c"^v40@0:8c16q20f28d32\00"
3946// CHECK-ios: private unnamed_addr constant [21 x i8] c"^v40@0:8B16q20f28d32\00"
4047// 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"
4149
4250 @objc func testOptionalPrimitives( )
4351 -> OpaquePointer ? { return nil }
4452// CHECK-macosx: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
4553// CHECK-ios: private unnamed_addr constant [9 x i8] c"^v16@0:8\00"
4654// 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"
4756
4857 @objc func testCSignedTypes( _ a: CSignedChar , b: CShort , c: CInt , d: CLong , e: CLongLong ) { }
4958// CHECK-macosx: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
5059// CHECK-ios: private unnamed_addr constant [23 x i8] c"v44@0:8c16s20i24q28q36\00"
5160// 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"
5262
5363 @objc func testCUnsignedTypes( _ a: CUnsignedChar , b: CUnsignedShort , c: CUnsignedInt , d: CUnsignedLong , e: CUnsignedLongLong ) { }
5464// CHECK-macosx: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
5565// CHECK-ios: private unnamed_addr constant [23 x i8] c"v44@0:8C16S20I24Q28Q36\00"
5666// 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"
5768
5869 @objc func testCChars( _ basic: CChar , wchar wide: CWideChar , char16: CChar16 , char32: CChar32 ) { }
5970// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
6071// CHECK-ios: private unnamed_addr constant [20 x i8] c"v32@0:8c16i20S24i28\00"
6172// 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"
6274
6375 @objc func testCBool( _ a: CBool ) { }
6476// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v20@0:8c16\00"
6577// CHECK-ios: private unnamed_addr constant [11 x i8] c"v20@0:8B16\00"
6678// 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"
6780
6881 @objc func testSizedSignedTypes( _ a: Int8 , b: Int16 , c: Int32 , d: Int64 ) { }
6982// CHECK-macosx: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
7083// CHECK-ios: private unnamed_addr constant [20 x i8] c"v36@0:8c16s20i24q28\00"
7184// 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"
7286
7387 @objc class func getSelf( ) -> Methods . Type { return self }
7488// These strings are required for another purpose and so are tested above.
@@ -77,61 +91,72 @@ import gizmo
7791// CHECK-macosx: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
7892// CHECK-ios: private unnamed_addr constant [8 x i8] c"@16@0:8\00"
7993// 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"
8095
8196 @objc func testId( _ s: AnyObject ) -> AnyObject { return self }
8297// CHECK-macosx: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
8398// CHECK-ios: private unnamed_addr constant [11 x i8] c"@24@0:8@16\00"
8499// 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"
85101
86102 @objc func comp1( _ a: P1 & P2 , b: P1 & P2 & P3 ) -> P1 & P2 { return a }
87103// CHECK-macosx: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
88104// CHECK-ios: private unnamed_addr constant [14 x i8] c"@32@0:8@16@24\00"
89105// 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"
90107
91108 @objc func returnsBool( _ b : Bool ) -> Bool { return b }
92109// CHECK-macosx: private unnamed_addr constant [11 x i8] c"c20@0:8c16\00"
93110// CHECK-ios: private unnamed_addr constant [11 x i8] c"B20@0:8B16\00"
94111// 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"
95113
96114 @objc func comp1( _ a: Methods , b: Methods , c: Methods ) -> Methods { return a }
97115// CHECK-macosx: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
98116// CHECK-ios: private unnamed_addr constant [17 x i8] c"@40@0:8@16@24@32\00"
99117// 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"
100119
101120 @objc func passSelector( _ aSelector : Selector ) { }
102121// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
103122// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8:16\00"
104123// 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"
105125
106126 @objc func copyUnsafeMutablePointer( _ p: UnsafeMutablePointer < Int32 > ) -> UnsafeMutablePointer < Int32 > { return p }
107127// CHECK-macosx: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
108128// CHECK-ios: private unnamed_addr constant [13 x i8] c"^i24@0:8^i16\00"
109129// 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"
110131
111132 @objc func copyUnsafeMutablePointerInt( _ p: UnsafeMutablePointer < Int > ) -> UnsafeMutablePointer < Int > { return p }
112133// CHECK-macosx: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
113134// CHECK-ios: private unnamed_addr constant [13 x i8] c"^q24@0:8^q16\00"
114135// 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"
115137
116138 @objc func testArchetype( _ work: P3 ) {
117139 }
118140// CHECK-macosx: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
119141// CHECK-ios: private unnamed_addr constant [11 x i8] c"v24@0:8@16\00"
120142// 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"
121144
122145 @objc func foo( _ x: ( Int ) -> Int ) -> Int {
123146 return 1
124147 }
125148// CHECK-macosx: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
126149// CHECK-ios: private unnamed_addr constant [12 x i8] c"q24@0:8@?16\00"
127150// 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"
128152
129153 @objc func returnNSRadixedOptions( ) -> NSRadixedOptions {
130154 return . octal
131155 }
132156// CHECK-macosx: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
133157// CHECK-ios: [[ENUMENCODING:@.*]] = private unnamed_addr constant [8 x i8] c"i16@0:8\00"
134158// 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"
135160
136161 @objc func returnChoseNSRadixedOptions( _ choice: NSRadixedOptions ) -> NSRadixedOptions {
137162 switch choice {
@@ -142,6 +167,7 @@ import gizmo
142167// CHECK-macosx: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
143168// CHECK-ios: private unnamed_addr constant [11 x i8] c"i20@0:8i16\00"
144169// 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"
145171
146172 @objc func getRawEnumInGizmo( ) -> RawEnumInGizmo {
147173 return InGizmoTwo
@@ -152,6 +178,8 @@ import gizmo
152178// CHECK-ios: i8* getelementptr inbounds ([8 x i8], [8 x i8]* [[ENUMENCODING]], i64 0, i64 0)
153179// CHECK-tvos: { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"\01L_selector_data(getRawEnumInGizmo)", i64 0, i64 0),
154180// 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)
155183
156184}
157185
@@ -182,6 +210,11 @@ import gizmo
182210// CHECK-tvos: [[ENC3:@.*]] = private unnamed_addr constant [53 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject\2216\00"
183211// CHECK-tvos: [[ENC4:@.*]] = private unnamed_addr constant [75 x i8] c"v24@0:8@\22_TtC18objc_type_encoding14MyCustomObject<NSFunging><NSRuncing>\2216\00"
184212// 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)]
185218
186219class C : P {
187220 func stuff( ) { }
0 commit comments