// RUN: %target-typecheck-verify-swift -swift-version 4 | |
// Ensure that we do not select the unavailable failable init as the | |
// only solution and then fail to typecheck. | |
protocol P {} | |
class C : P { | |
@available(swift, obsoleted: 4) | |
public init?(_ c: C) { | |
} | |
public init<T : P>(_ c: T) {} | |
} | |
func f(c: C) { | |
let _: C? = C(c) | |
} |