blob: fe83befd2f5c57da7f38a6d112275d04dcc709cb [file] [log] [blame]
// RUN: %target-run-simple-swift | %FileCheck %s
// REQUIRES: executable_test
struct S {
var a, b : Int
init(_ a : Int, _ b : Int) {
self.a = a
self.b = b
}
init(_ x:UnicodeScalar) {
a = 219
b = 912
print("constructed \(x)")
}
}
class C {
var a, b : Int
init(x:UnicodeScalar) {
a = 20721
b = 12702
print("constructed \(x)")
}
}
class D : C {
init() {
super.init(x: "z")
print("...in bed")
}
}
func print(_ s: S) {
print("S(a=\(s.a), b=\(s.b))")
}
func print(_ c: C) {
print("C(a=\(c.a), b=\(c.b))")
}
// CHECK: S(a=1, b=2)
print(S(1, 2))
// CHECK: constructed x
// CHECK: S(a=219, b=912)
print(S("x"))
// CHECK: constructed y
// CHECK: C(a=20721, b=12702)
print(C(x: "y"))
// CHECK: constructed z
// CHECK: ...in bed
// CHECK: C(a=20721, b=12702)
print(D())
class BaseWithDummyParameter {
init() {
fatalError("wrong init")
}
init(dummy: ()) {
print("correct")
}
}
class DerivedWithDummyParameter : BaseWithDummyParameter {
override init() {
super.init(dummy: ())
}
}
_ = BaseWithDummyParameter(dummy: ()) // CHECK: correct
_ = DerivedWithDummyParameter() // CHECK: correct