// RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -disable-objc-attr-requires-foundation-module -typecheck %s -emit-fixits-path %t.remap // RUN: c-arcmt-test %t.remap | arcmt-test -verify-transformed-files %s.result import ObjectiveC // REQUIRES: objc_interop @objc class Selectors { func takeSel(_: Selector) {} @objc func mySel() {} func test() { takeSel(#selector(self.mySel)) takeSel(#selector(self.mySel)) } } @objc class OtherClass { func test(s: Selectors) { s.takeSel(#selector(Selectors.mySel)) s.takeSel(#selector(Selectors.mySel)) } } @objc class Base { @objc func baseSel() {} } @objc class Outer { func takeSel(_: Selector) {} @objc func outerSel() {} @objc class Inner: Base { func takeSel(_: Selector) {} @objc func innerSel() {} func test(s: Selectors, o: Outer) { s.takeSel(#selector(Selectors.mySel)) s.takeSel(#selector(Selectors.mySel)) takeSel(#selector(self.innerSel)) takeSel(#selector(self.innerSel)) takeSel(#selector(self.baseSel)) takeSel(#selector(self.baseSel)) o.takeSel(#selector(Outer.outerSel)) o.takeSel(#selector(Outer.outerSel)) } } func test(s: Selectors, i: Inner) { s.takeSel(#selector(Selectors.mySel)) s.takeSel(#selector(Selectors.mySel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Base.baseSel)) i.takeSel(#selector(Base.baseSel)) takeSel(#selector(self.outerSel)) takeSel(#selector(self.outerSel)) } } extension Outer { func test2(s: Selectors, i: Inner) { s.takeSel(#selector(Selectors.mySel)) s.takeSel(#selector(Selectors.mySel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Base.baseSel)) i.takeSel(#selector(Base.baseSel)) takeSel(#selector(self.outerSel)) takeSel(#selector(self.outerSel)) } } func freeTest(s: Selectors, o: Outer, i: Outer.Inner) { s.takeSel(#selector(Selectors.mySel)) s.takeSel(#selector(Selectors.mySel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Inner.innerSel)) i.takeSel(#selector(Base.baseSel)) i.takeSel(#selector(Base.baseSel)) o.takeSel(#selector(Outer.outerSel)) o.takeSel(#selector(Outer.outerSel)) } func foo(an : Any) { let a1 : AnyObject a1 = an as AnyObject let a2 : AnyObject? a2 = an as AnyObject let a3 : AnyObject! a3 = an as AnyObject } func foo1(_ an : Any) { let obj: AnyObject = an as AnyObject } func foo2(_ messageData: Any?) -> AnyObject? { return messageData as AnyObject }