mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
65 lines
1.4 KiB
Swift
65 lines
1.4 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-build-swift -o %t/main %s %S/Inputs/dynamic_replacement_multi_file_A.swift %S/Inputs/dynamic_replacement_multi_file_B.swift -swift-version 5
|
|
// RUN: %target-codesign %t/main
|
|
// RUN: %target-run %t/main
|
|
|
|
// REQUIRES: executable_test
|
|
|
|
// UNSUPPORTED: swift_test_mode_optimize
|
|
// UNSUPPORTED: swift_test_mode_optimize_size
|
|
|
|
import StdlibUnittest
|
|
|
|
dynamic func replaceable() -> Int {
|
|
return 0
|
|
}
|
|
|
|
dynamic func replaceableInOtherFile() -> Int {
|
|
return 0
|
|
}
|
|
|
|
@_dynamicReplacement(for: replaceable())
|
|
func replaceable_r() -> Int {
|
|
return 1
|
|
}
|
|
|
|
protocol P {}
|
|
|
|
extension Int : P {}
|
|
|
|
struct Pair {
|
|
var x: Int64 = 0
|
|
var y: Int64 = 0
|
|
}
|
|
|
|
extension Pair : P {}
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
dynamic func bar(_ x: Int) -> some P {
|
|
return x
|
|
}
|
|
|
|
@available(SwiftStdlib 5.1, *)
|
|
@_dynamicReplacement(for: bar(_:))
|
|
func bar_r(_ x: Int) -> some P {
|
|
return Pair()
|
|
}
|
|
|
|
var DynamicallyReplaceable = TestSuite("DynamicallyReplaceable")
|
|
|
|
DynamicallyReplaceable.test("DynamicallyReplaceable") {
|
|
if #available(SwiftStdlib 5.1, *) {
|
|
expectEqual(1, replaceable())
|
|
expectEqual(2, replaceable1())
|
|
expectEqual(3, replaceable2())
|
|
expectEqual(7, replaceableInOtherFile())
|
|
expectEqual(16, MemoryLayout.size(ofValue: bar(5)))
|
|
expectEqual(16, MemoryLayout.size(ofValue: bar1(5)))
|
|
expectEqual(16, MemoryLayout.size(ofValue: bar2(5)))
|
|
expectEqual(16, MemoryLayout.size(ofValue: bar3(5)))
|
|
}
|
|
|
|
}
|
|
|
|
runAllTests()
|