| // 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 |
| |