mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
67 lines
2.3 KiB
Swift
67 lines
2.3 KiB
Swift
// RUN: %empty-directory(%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 %env-SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=0 %target-run %t/a.out 2>&1 | %FileCheck %s -check-prefix=CHECK_NOTHING
|
|
|
|
// RUN: env %env-SWIFT_DEBUG_IMPLICIT_OBJC_ENTRYPOINT=1 %target-run %t/a.out > %t/level1.log 2>&1
|
|
// RUN: %FileCheck %s -check-prefix=CHECK_WARNINGS < %t/level1.log
|
|
|
|
// RUN: env %env-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: env %env-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 explicit swift-version 4.
|
|
// UNSUPPORTED: swift_test_mode_optimize_none_with_implicit_dynamic
|
|
|
|
import StdlibUnittest
|
|
import Foundation
|
|
|
|
var DeprecatedObjCInferenceTestSuite = TestSuite("DeprecatedObjCInferenceTestSuite")
|
|
|
|
class MyClass : NSObject {
|
|
// The line numbers of the next two methods are mentioned in the CHECK lines
|
|
// below. Please keep them as 26 and 27.
|
|
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()
|
|
|