blob: b45118f4952575e6872c84ec7498abed02b20377 [file] [log] [blame]
// RUN: %empty-directory(%t)
// RUN: %target-build-swift %s -module-name=a -o %t/a.out
// RUN: %target-run %t/a.out | %FileCheck %s
// REQUIRES: executable_test
@propertyWrapper struct D<Value> {
var wrappedValue: Value {
didSet {
print("set: \(wrappedValue)")
}
}
init(wrappedValue: Value) {
self.wrappedValue = wrappedValue
print("init: \(wrappedValue)")
}
}
struct S<T> {
@D var a: (Int,Int)
@D var b: (T,T)
@D var c: (Int,(Int, Bool))
@D var d: (T,Int)
@D var e: (Int,(T, Bool))
init(_ t: T) {
// CHECK: init: (27, 28)
a = (27, 28)
// CHECK: init: (a.X, a.X)
b = (t, t)
// CHECK: init: (27, (28, true))
c = (27, (28, true))
// CHECK: init: (a.X, 27)
d = (t, 27)
// CHECK: init: (27, (a.X, true))
e = (27, (t, true))
// CHECK: set: (27, 28)
a = (27, 28)
// CHECK: set: (a.X, a.X)
b = (t, t)
// CHECK: set: (27, (28, true))
c = (27, (28, true))
// CHECK: set: (a.X, 27)
d = (t, 27)
// CHECK: set: (27, (a.X, true))
e = (27, (t, true))
}
}
class X {
static var numInstances = 0
init() {
X.numInstances += 1
}
deinit {
X.numInstances -= 1
}
}
func test() {
_ = S(X())
}
test()
// CHECK: num instances of X: 0
print("num instances of X: \(X.numInstances)")