mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
1) Enable tests that use `import Dispatch` on Linux. Add substitution `%import-libdispatch` that needs to be used for all cross-platform tests (i.e., tests that are intended to be run on other platforms than Darwin) that do `import Dispatch` or enable thread sanitizer. 2) Make sure as many existing Dispatch and TSan tests as possible run on Linux. Mark tests that would require substantial work with `UNSUPPORTED: OS=linux-gnu`. 3) Add integration-style Swift test that shows that TSan finds a simple race when using `Dispatch.async` incorrectly. A more complete test suite for TSan's libdispatch support lives on the LLVM/compiler-rt side. rdar://problem/49177535
32 lines
746 B
Swift
32 lines
746 B
Swift
// RUN: %target-run-simple-swift
|
|
// REQUIRES: executable_test
|
|
// REQUIRES: foundation
|
|
|
|
// SR-5958
|
|
import Foundation
|
|
|
|
public struct Property: Equatable, Hashable, Codable {
|
|
public var value: PropertyValue<Property>
|
|
}
|
|
|
|
public enum PropertyValue<P>: Equatable, Hashable where P: Equatable & Hashable {
|
|
case invalid
|
|
case date(date: Date?)
|
|
}
|
|
|
|
extension PropertyValue: Codable where P: Codable {
|
|
public func encode(to encoder: Encoder) throws {}
|
|
public init(from decoder: Decoder) throws { self = .invalid }
|
|
}
|
|
|
|
extension String: Error {}
|
|
|
|
let encoder = JSONEncoder()
|
|
let json = try! encoder.encode(
|
|
Property(value: .invalid)
|
|
)
|
|
|
|
let decoder = JSONDecoder()
|
|
let result = try! decoder.decode(Property.self, from: json)
|
|
print(result)
|