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