Files
swift-mirror/test/Runtime/lazy_witness_table_cycle.swift
Julian Lettner 105e4ad592 [TSan] Add positive test for TSan + Dispatch on Linux
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
2019-06-10 14:24:53 -07:00

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)