// RUN: %target-typecheck-verify-swift // REQUIRES: objc_interop import Foundation // Tests for correct detection of the "objc_in_generic_extension" error, // declared in {Swift Source}/include/swift/AST/DiagnosticsSema.def // Test "0 levels" deep class A : NSObject { init(a: ()) { super.init() } } extension A { // This should throw an error @objc func a1() {} // expected-error{{extensions of generic classes cannot contain '@objc' members}} // This should *not* throw an error func a2() {} } // Test "1 level" deep class B : A { init(b: ()) { super.init(a: ()) } } extension B { // This is supported now @objc func b1() {} func b2() {} } // Test "many levels" deep class C : B {} class D : C { init(d: ()) { super.init(b: ()) } } extension D { // This is supported now @objc func d1() {} func d2() {} } class Outer { class Inner {} } extension Outer.Inner { @objc func outerInner1() {} // expected-error@-1{{extensions of classes from generic context cannot contain '@objc' members}} func outerInner2() {} }