// RUN: %target-swift-frontend %s -typecheck -verify class Base { } class Derived: Base { } func foo(_ x: T) -> Derived where T: Base, T: Derived { // expected-warning@-1{{redundant superclass constraint 'T' : 'Base'}} // expected-note@-2{{superclass constraint 'T' : 'Derived' written here}} return x } // FIXME: Should not be an error // expected-error@+2{{generic parameter 'U' cannot be a subclass of both 'Derived' and 'Base'}} // expected-note@+1{{superclass constraint 'U' : 'Base' written here}} func bar(_ x: U, y: T) -> (Derived, Int) where U: Base, U: Derived { // FIXME // expected-error@+1{{cannot convert return expression}} return (x, y) } // SR-7551 captures a crash on this code. class IntegerClass : ExpressibleByIntegerLiteral, Equatable { required init(integerLiteral value: Int) { } static func ==(lhs: IntegerClass, rhs: IntegerClass) -> Bool { return true } } func foo(_ num: T) { let _ = num != 0 }