91
91
// CHECK: }
92
92
93
93
94
- // Non-reference subscript operators are not currently imported (SR-14351)
95
- // so just make sure we don't crash.
96
- // CHECK: struct NonReferenceReadIntArray {
94
+ // CHECK: struct IntArrayByVal {
95
+ // CHECK: @available(*, unavailable, message: "use subscript")
96
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> Int32
97
+ // CHECK: subscript(x: Int32) -> Int32 { mutating get }
98
+ // CHECK: }
99
+
100
+ // CHECK: struct NonTrivialIntArrayByVal {
101
+ // CHECK: @available(*, unavailable, message: "use subscript")
102
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> Int32
103
+ // CHECK: subscript(x: Int32) -> Int32 { mutating get }
104
+ // CHECK: }
105
+
106
+ // CHECK: struct DifferentTypesArrayByVal {
107
+ // CHECK: @available(*, unavailable, message: "use subscript")
108
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> Int32
109
+
110
+ // CHECK: @available(*, unavailable, message: "use subscript")
111
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Bool) -> Bool
112
+
113
+ // CHECK: @available(*, unavailable, message: "use subscript")
114
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Double) -> Double
115
+
116
+ // CHECK: subscript(x: Int32) -> Int32 { mutating get }
117
+ // CHECK: subscript(x: Bool) -> Bool { mutating get }
118
+ // CHECK: subscript(x: Double) -> Double { mutating get }
119
+ // CHECK: }
120
+
121
+
122
+ // CHECK: struct TemplatedArrayByVal<T> {
97
123
// CHECK: }
124
+ // CHECK: struct __CxxTemplateInst19TemplatedArrayByValIdE {
125
+ // CHECK: @available(*, unavailable, message: "use subscript")
126
+ // CHECK: mutating func __operatorSubscriptConst(_ i: Int32) -> Double
127
+ // CHECK: subscript(i: Int32) -> Double { mutating get }
128
+ // CHECK: }
129
+ // CHECK: typealias TemplatedDoubleArrayByVal = __CxxTemplateInst19TemplatedArrayByValIdE
130
+
131
+
132
+ // CHECK: struct TemplatedSubscriptArrayByVal {
133
+ // CHECK: @available(*, unavailable, message: "use subscript")
134
+ // CHECK: mutating func __operatorSubscriptConst<T>(_ i: T) -> T
135
+ // CHECK: subscript(i: T) -> T { mutating get }
136
+ // CHECK: }
137
+
138
+ // CHECK: struct NonTrivialArrayByVal {
139
+ // CHECK: @available(*, unavailable, message: "use subscript")
140
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> NonTrivial
141
+ // CHECK: subscript(x: Int32) -> NonTrivial { mutating get }
142
+ // CHECK: }
143
+ // CHECK: struct PtrByVal {
144
+ // CHECK: @available(*, unavailable, message: "use subscript")
145
+ // CHECK: mutating func __operatorSubscript(_ x: Int32) -> UnsafeMutablePointer<Int32>!
146
+ // CHECK: subscript(x: Int32) -> UnsafeMutablePointer<Int32>! { mutating get }
147
+ // CHECK: }
148
+ // CHECK: struct RefToPtr {
149
+ // CHECK: @available(*, unavailable, message: "use subscript")
150
+ // CHECK: mutating func __operatorSubscript(_ x: Int32) -> UnsafeMutablePointer<UnsafeMutablePointer<Int32>?>
151
+ // CHECK: subscript(x: Int32) -> UnsafeMutablePointer<Int32>? { mutating get set }
152
+ // CHECK: }
153
+ // CHECK: struct PtrToPtr {
154
+ // CHECK: @available(*, unavailable, message: "use subscript")
155
+ // CHECK: mutating func __operatorSubscript(_ x: Int32) -> UnsafeMutablePointer<UnsafeMutablePointer<Int32>?>!
156
+ // CHECK: subscript(x: Int32) -> UnsafeMutablePointer<UnsafeMutablePointer<Int32>?>! { mutating get }
157
+ // CHECK: }
158
+ // CHECK: struct ConstOpPtrByVal {
159
+ // CHECK: @available(*, unavailable, message: "use subscript")
160
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> UnsafePointer<Int32>!
161
+ // CHECK: subscript(x: Int32) -> UnsafePointer<Int32>! { mutating get }
162
+ // CHECK: }
163
+ // CHECK: struct ConstPtrByVal {
164
+ // CHECK: @available(*, unavailable, message: "use subscript")
165
+ // CHECK: mutating func __operatorSubscriptConst(_ x: Int32) -> UnsafePointer<Int32>!
166
+ // CHECK: subscript(x: Int32) -> UnsafePointer<Int32>! { mutating get }
167
+ // CHECK: }
0 commit comments