// RUN: %target-typecheck-verify-swift protocol X {} class B : Equatable { static func == (lhs: B, rhs: B) -> Bool { fatalError() } } class C : B {} extension C : X {} func f(_ lhs: T, _ rhs: T) {} extension Optional where Wrapped : Equatable { static func f(_ lhs: Wrapped?, _ rhs: Wrapped?) {} } // Ensure that we can call both a function that has generic parameters // as well as one that has the generic parameters wrapped in // Optionals. func test(x: (X & B)?, y: C?) { f(x, y) Optional.f(x, y) }