| // RUN: rm -rf %t && mkdir -p %t |
| // RUN: %target-build-swift -swift-version 4 -Xfrontend -enable-swift3-objc-inference %s -o %t/a.out |
| // RUN: %target-run %t/a.out 2>&1 | %FileCheck %s -check-prefix=CHECK_WARNINGS |
| // RUN: env SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=0 SIMCTL_CHILD_SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=0 %target-run %t/a.out 2>&1 | %FileCheck %s -check-prefix=CHECK_NOTHING |
| |
| // RUN: env SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=1 SIMCTL_CHILD_SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=2 %target-run %t/a.out > %t/level1.log 2>&1 |
| // RUN: %FileCheck %s -check-prefix=CHECK_WARNINGS < %t/level1.log |
| |
| // RUN: env SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=2 SIMCTL_CHILD_SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=2 %target-run %t/a.out > %t/level2.log 2>&1 |
| // RUN: %FileCheck %s -check-prefix=CHECK_WARNINGS < %t/level2.log |
| |
| // RUN: SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=3 SIMCTL_CHILD_SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=3 %target-run %t/a.out -expect-crash > %t/level3.log 2>&1 |
| // RUN: %FileCheck %s -check-prefix=CHECK_CRASH < %t/level3.log |
| |
| // REQUIRES: executable_test |
| // REQUIRES: objc_interop |
| // REQUIRES: OS=macosx |
| |
| import StdlibUnittest |
| import Foundation |
| import Darwin |
| |
| var DeprecatedObjCInferenceTestSuite = TestSuite("DeprecatedObjCInferenceTestSuite") |
| |
| class MyClass : NSObject { |
| func foo() { } |
| class func bar() { } |
| } |
| |
| let x = MyClass() |
| let fooSel = "foo" |
| let barSel = "bar" |
| |
| var shouldCrash = CommandLine.arguments.contains("-expect-crash") |
| |
| DeprecatedObjCInferenceTestSuite.test("messagingObjCInference") { |
| // Note whether we're expecting to crash. |
| if shouldCrash { expectCrashLater() } |
| |
| // CHECK_NOTHING: ---Begin |
| // CHECK_WARNINGS: ---Begin |
| // CHECK_CRASH: ---Begin |
| fputs("---Begin\n", stderr) |
| |
| // CHECK_WARNINGS: .swift:26:3: implicit Objective-C entrypoint -[a.MyClass foo] |
| // CHECK_CRASH: .swift:26:3: implicit Objective-C entrypoint -[a.MyClass foo] |
| x.perform(Selector(fooSel)) |
| // CHECK_WARNINGS-NOT: .swift:26:3: implicit Objective-C entrypoint -[a.MyClass foo] |
| x.perform(Selector(fooSel)) |
| |
| // CHECK_WARNINGS: .swift:27:3: implicit Objective-C entrypoint +[a.MyClass bar] |
| type(of: x).perform(Selector(barSel)) |
| // CHECK_WARNINGS-NOT: .swift:27:3: implicit Objective-C entrypoint +[a.MyClass bar] |
| type(of: x).perform(Selector(barSel)) |
| |
| // CHECK_NOTHING-NEXT: ---End |
| // CHECK_WARNINGS: ---End |
| // CHECK_CRASH-NOT: ---End |
| fputs("---End\n", stderr) |
| } |
| |
| runAllTests() |
| |