mirror of
https://github.com/apple/swift.git
synced 2026-10-04 11:58:22 +02:00
The opaque values test coverage I initially added will emit to stdout, which is noisy for people's logs if the test is failing for some other reason.
138 lines
2.3 KiB
Swift
138 lines
2.3 KiB
Swift
// RUN: %target-swift-emit-silgen-ossa -o /dev/null -enable-sil-opaque-values %s
|
|
// RUN: %target-swift-emit-silgen -o /dev/null %s
|
|
|
|
func inoutFunc(_ x: inout Int) {}
|
|
|
|
// <rdar://22000564> Crash on Subscript taking a tuple argument list
|
|
class TupleSubscript {
|
|
subscript (position: (Int, Int)) -> Int {
|
|
get { return 32 }
|
|
set {}
|
|
}
|
|
subscript(native native: Int) -> Int {
|
|
get { return native }
|
|
set {}
|
|
}
|
|
subscript (position position: (Int, Int)) -> Int {
|
|
get { return 32 }
|
|
set {}
|
|
}
|
|
}
|
|
|
|
do {
|
|
let t = TupleSubscript()
|
|
|
|
_ = t[(1, 2)]
|
|
t[(1, 2)] = 3
|
|
inoutFunc(&t[(1, 2)])
|
|
|
|
_ = t[native: 0]
|
|
t[native: 0] = 1
|
|
inoutFunc(&t[native: 0])
|
|
|
|
_ = t[position: (1, 2)]
|
|
t[position: (1, 2)] = 1
|
|
inoutFunc(&t[position: (1, 2)])
|
|
}
|
|
|
|
// <rdar://problem/16189360> [DF] Assert on subscript with variadic parameter
|
|
class VariadicSubscript1 {
|
|
subscript(subs: Int...) -> Int {
|
|
get {
|
|
return 42
|
|
}
|
|
set {}
|
|
}
|
|
}
|
|
|
|
do {
|
|
let v = VariadicSubscript1()
|
|
|
|
_ = v[]
|
|
v[] = 0
|
|
inoutFunc(&v[])
|
|
|
|
_ = v[1]
|
|
v[1] = 0
|
|
inoutFunc(&v[1])
|
|
|
|
_ = v[0, 1, 2]
|
|
v[0, 1, 2] = 3
|
|
inoutFunc(&v[0, 1, 2])
|
|
}
|
|
|
|
class VariadicSubscript2 {
|
|
subscript(x: String, subs: Int...) -> Int {
|
|
get {
|
|
return 42
|
|
}
|
|
set {}
|
|
}
|
|
}
|
|
|
|
do {
|
|
let v = VariadicSubscript2()
|
|
|
|
_ = v[""]
|
|
v[""] = 0
|
|
inoutFunc(&v[""])
|
|
|
|
_ = v["", 0, 1, 2]
|
|
v["", 0, 1, 2] = 3
|
|
inoutFunc(&v["", 0, 1, 2])
|
|
}
|
|
|
|
struct VariadicSubscript3 {
|
|
subscript(indices: (Int, Int)...) -> Int {
|
|
get { return 0 }
|
|
set {}
|
|
}
|
|
}
|
|
|
|
do {
|
|
var b = VariadicSubscript3()
|
|
_ = b[]
|
|
b[] = 1
|
|
inoutFunc(&b[])
|
|
|
|
_ = b[(1, 2)]
|
|
b[(1,2)] = 1
|
|
inoutFunc(&b[(1,2)])
|
|
|
|
_ = b[(1, 2),(2,3)]
|
|
b[(1,2),(2,3)] = 1
|
|
inoutFunc(&b[(1,2),(2,3)])
|
|
}
|
|
|
|
// https://github.com/apple/swift/issues/44425
|
|
|
|
public struct Flags: OptionSet {
|
|
public var rawValue: Int
|
|
public init(rawValue: Int) { self.rawValue = rawValue }
|
|
|
|
public static let flag = Flags(rawValue: 1 << 0)
|
|
}
|
|
|
|
class VariadicSubscript4 {
|
|
subscript(_ values: Int..., flags flags: Flags) -> Int {
|
|
get { return 0 }
|
|
set { }
|
|
}
|
|
}
|
|
|
|
do {
|
|
let t = VariadicSubscript4()
|
|
|
|
_ = t[flags: .flag]
|
|
t[flags: .flag] = 0
|
|
inoutFunc(&t[flags: .flag])
|
|
|
|
_ = t[1, flags: .flag]
|
|
t[1, flags: .flag] = 0
|
|
inoutFunc(&t[1, flags: .flag])
|
|
|
|
_ = t[1, 2, 3, flags: .flag]
|
|
t[1, 2, 3, flags: .flag] = 0
|
|
inoutFunc(&t[1, 2, 3, flags: .flag])
|
|
}
|