// RUN: %target-typecheck-verify-swift -parse-as-library class B : A { override init() { super.init() } override func f() {} func g() -> (B, B) { return (B(), B()) } // expected-error {{declaration 'g()' cannot override more than one superclass declaration}} override func h() -> (A, B) { return (B(), B()) } // expected-note {{'h()' previously overridden here}} override func h() -> (B, A) { return (B(), B()) } // expected-error {{'h()' has already been overridden}} func i() {} // expected-error {{overri}} override func j() -> Int { return 0 } func j() -> Float { return 0.0 } func k() -> Float { return 0.0 } override func l(_ l: Int) {} override func l(_ l: Float) {} override func m(_ x: Int) {} func m(_ x: Float) {} // not an override of anything func n(_ x: Float) {} override subscript(i : Int) -> Int { get {} set {} } } class A { init() { } func f() {} func g() -> (B, A) { return (B(), B()) } // expected-note{{overridden declaration is here}} func g() -> (A, B) { return (B(), B()) } // expected-note{{overridden declaration is here}} func h() -> (A, A) { return (B(), B()) } func j() -> Int { return 0 } func k() -> Int { return 0 } func l(_ l: Int) {} func l(_ l: Float) {} func m(_ x: Int) {} func m(y: Int) {} func n(_ x: Int) {} subscript(i : Int) -> Int { get {} set {} } } extension A { func i() {} // expected-note{{overri}} } func f() { let x = B() _ = x.f() as () _ = x[10] as Int } class C { init() { } func f(_ v: T) -> T { return v } } class D : C { override init() { super.init() } override func f(_ v: Int) -> Int { return v+1 } } func f2() { let x = D() _ = x.f(10) } class E { func f(_ v: T) -> T { return v } } class F : E {} class G : F { override func f(_ v: Int) -> Int { return v+1 } } // Explicit downcasting func test_explicit_downcasting(_ f: F, ei: E) { var g = f as! G g = ei as! G _ = g } // Type and instance functions with the same name class H { func f(_ x: Int) { } class func f(_ x: Int) { } } class HDerived : H { override func f(_ x: Int) { } override class func f(_ x: Int) { } } // Subclass existentials in inheritance clause protocol P {} protocol Q {} protocol R {} class Base : Q & R {} class Derived : P & Base {} func f(_: P) {} func g(_: Base) {} func h(_: Q) {} func i(_: R) {} func testSubclassExistentialsInInheritanceClause() { f(Derived()) g(Derived()) h(Derived()) i(Derived()) }