9191// CHECK: }
9292
9393
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> {
97123// 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