// RUN: %target-typecheck-verify-swift struct A { // Can deduce from this constructor init(x:T) { } // Can't from this one init(x:Int, y:Int) { } static func bort(_ x: T) -> T { return x } } var a = A(x: 0) var a1 : A = a var b = A(x: "zero") var b1 : A = b class C { init(x:T) { } } var c = C(x: 0) var c1 : C = c var d = C(x: "zero") var d1 : C = d var x : Int = A.bort(0) var y : String = A.bort("zero") func foo(_ a: A) { } // Deduce A from context foo(A(x: 0, y: 0)) // Specifying only some of the generic arguments. struct B { } struct X { init(a:U) {} } var q = X(a: x)