diff --git a/Sources/OpenSwiftUICore/Render/DisplayList/DisplayList.swift b/Sources/OpenSwiftUICore/Render/DisplayList/DisplayList.swift index 38788f90..69de86f1 100644 --- a/Sources/OpenSwiftUICore/Render/DisplayList/DisplayList.swift +++ b/Sources/OpenSwiftUICore/Render/DisplayList/DisplayList.swift @@ -214,12 +214,16 @@ extension DisplayList { // } package struct Version: Comparable, Hashable { + private static var lastValue: Int = .zero + package private(set) var value: Int - + package init() { value = .zero } - package init(decodedValue value: Int) { self.value = value } - private static var lastValue: Int = .zero + package init(decodedValue value: Int) { + Version.lastValue = max(Version.lastValue, value) + self.value = value + } package init(forUpdate: Void) { Version.lastValue &+= 1 diff --git a/Tests/OpenSwiftUICoreTests/Render/DisplayList/DisplayListTests.swift b/Tests/OpenSwiftUICoreTests/Render/DisplayList/DisplayListTests.swift new file mode 100644 index 00000000..ecf877fe --- /dev/null +++ b/Tests/OpenSwiftUICoreTests/Render/DisplayList/DisplayListTests.swift @@ -0,0 +1,26 @@ +// +// DisplayListTests.swift +// OpenSwiftUICoreTests + +import OpenSwiftUICore +import Testing + +struct DisplayListTests { + @Test + @MainActor + func version() { + typealias Version = DisplayList.Version + let v0 = Version() + let v1 = Version(decodedValue: 999) + let v2 = Version(forUpdate: ()) + #expect(v0.value == 0) + #expect(v1.value == 999) + #expect(v2.value == 1000) + #expect(v1 < v2) + + var combineVersion = v0 + #expect(combineVersion.value == 0) + combineVersion.combine(with: v1) + #expect(combineVersion.value == 999) + } +}