Files
swift-mirror/test/FixCode/fixits-apply-objc.swift
Robert Widmann 911e749e4e [Sema] Suggest #selector(self.foo) instead of #selector(TypeName.foo) when possible
When inside a declaration or extension of TypeName, humans usually don't write
the full typename like #selector(TypeName.foo), but instead prefer the neater
form #selector(self.foo). The compiler has enough information to do this too.

Fixes rdar://problem/2528469
2019-11-11 12:35:03 -08:00

112 lines
2.1 KiB
Swift

// 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("mySel")
takeSel(Selector("mySel"))
}
}
@objc class OtherClass {
func test(s: Selectors) {
s.takeSel("mySel")
s.takeSel(Selector("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("mySel")
s.takeSel(Selector("mySel"))
takeSel("innerSel")
takeSel(Selector("innerSel"))
takeSel("baseSel")
takeSel(Selector("baseSel"))
o.takeSel("outerSel")
o.takeSel(Selector("outerSel"))
}
}
func test(s: Selectors, i: Inner) {
s.takeSel("mySel")
s.takeSel(Selector("mySel"))
i.takeSel("innerSel")
i.takeSel(Selector("innerSel"))
i.takeSel("baseSel")
i.takeSel(Selector("baseSel"))
takeSel("outerSel")
takeSel(Selector("outerSel"))
}
}
extension Outer {
func test2(s: Selectors, i: Inner) {
s.takeSel("mySel")
s.takeSel(Selector("mySel"))
i.takeSel("innerSel")
i.takeSel(Selector("innerSel"))
i.takeSel("baseSel")
i.takeSel(Selector("baseSel"))
takeSel("outerSel")
takeSel(Selector("outerSel"))
}
}
func freeTest(s: Selectors, o: Outer, i: Outer.Inner) {
s.takeSel("mySel")
s.takeSel(Selector("mySel"))
i.takeSel("innerSel")
i.takeSel(Selector("innerSel"))
i.takeSel("baseSel")
i.takeSel(Selector("baseSel"))
o.takeSel("outerSel")
o.takeSel(Selector("outerSel"))
}
func foo(an : Any) {
let a1 : AnyObject
a1 = an
let a2 : AnyObject?
a2 = an
let a3 : AnyObject!
a3 = an
}
func foo1(_ an : Any) {
let obj: AnyObject = an
}
func foo2(_ messageData: Any?) -> AnyObject? {
return messageData
}