// RUN: %target-run-simple-swift | FileCheck %s // REQUIRES: executable_test class A { init() { print("a") } init(_ x:Int) { print("b") } init(_ x:Int, _ y:T) { print("c") } } class B { init() { print("d") } init(_ x:Int) { print("e") } init(_ x:T) { print("f") } init(_ x:Int, _ y:U) { print("g") } init(_ x:T, _ y:U) { print("h") } } protocol Runcible {} class C { init() { print("i") } init(_ x:Int) { print("j") } init(_ x:T) { print("k") } } // CHECK: a A() // CHECK: b A(1) // CHECK: c A(1, "2") typealias BChar = B // CHECK: d BChar() // CHECK: e BChar(1) // CHECK: f BChar("2") // CHECK: g BChar(1, "2") // CHECK: h BChar("1", "2") // Destructors for classes with constrained type parameters struct Hat : Runcible {} typealias CHat = C // CHECK: i CHat() // CHECK: j CHat(1) // CHECK: k CHat(Hat())