Files
swift-mirror/validation-test/Runtime/issue-51181.swift
Kavon Farvardin 6e1bd47d61 Revert "Disable test Runtime/issue-51181.swift"
This reverts commit dfcdf16a72.
2024-07-01 09:15:07 -07:00

60 lines
1.2 KiB
Swift

// RUN: %target-run-simple-swift
// REQUIRES: executable_test
// https://github.com/apple/swift/issues/51181
private protocol AnyChangeTracker {
var myVariable: Any? { get }
var isModified: Bool { get }
}
protocol ChangeTrackerType {
associatedtype Value
var originalValue: Value { get }
var value: Value { get set }
var isModified: Bool { get }
}
extension ChangeTrackerType where Value: Equatable {
var isModified: Bool {
return value != originalValue
}
}
struct ChangeTracker<T: Equatable>: ChangeTrackerType {
let originalValue: T
var value: T
init(value: T) {
originalValue = value
self.value = value
}
}
extension ChangeTracker: AnyChangeTracker where Value: OptionalType, Value.Wrapped: Equatable {
var myVariable: Any? {
return value
}
}
protocol OptionalType {
associatedtype Wrapped
var value: Wrapped? { get }
}
extension Optional: OptionalType {
var value: Wrapped? {
return self
}
}
let s: Any = ChangeTracker<String?>(value: "Foo")
guard let s = s as? AnyChangeTracker else {
fatalError("Does not comply to AnyChangeTracker")
}
let myVar = String(describing: s.myVariable ?? "nil")
assert(myVar == "Optional(\"Foo\")")