Fix: Resolve Swift 6 Equatable conformance errors for MainActor-isolated Views

- Add explicit nonisolated == implementations using MainActor.assumeIsolated
- Fix DimmedModifier, FlexibleFrameView, OverlayModifier
- Remove unnecessary @preconcurrency attributes
This commit is contained in:
phranck
2026-02-07 13:07:23 +01:00
parent 982c369853
commit fd1dd5f858
3 changed files with 29 additions and 4 deletions
@@ -15,7 +15,7 @@
/// The result is a flat, de-emphasized text layer with no visual ornaments.
public struct DimmedModifier<Content: View>: View {
/// The content to dim.
nonisolated(unsafe) let content: Content
let content: Content
public var body: Never {
fatalError("DimmedModifier renders via Renderable")
@@ -24,7 +24,11 @@ public struct DimmedModifier<Content: View>: View {
// MARK: - Equatable Conformance
extension DimmedModifier: @preconcurrency Equatable where Content: Equatable {}
extension DimmedModifier: Equatable where Content: Equatable {
nonisolated public static func == (lhs: DimmedModifier<Content>, rhs: DimmedModifier<Content>) -> Bool {
MainActor.assumeIsolated { lhs.content == rhs.content }
}
}
// MARK: - Ornament Characters
+14 -1
View File
@@ -41,7 +41,20 @@ public struct FlexibleFrameView<Content: View>: View {
// MARK: - Equatable Conformance
extension FlexibleFrameView: @preconcurrency Equatable where Content: Equatable {}
extension FlexibleFrameView: Equatable where Content: Equatable {
nonisolated public static func == (lhs: FlexibleFrameView<Content>, rhs: FlexibleFrameView<Content>) -> Bool {
MainActor.assumeIsolated {
lhs.content == rhs.content &&
lhs.minWidth == rhs.minWidth &&
lhs.idealWidth == rhs.idealWidth &&
lhs.maxWidth == rhs.maxWidth &&
lhs.minHeight == rhs.minHeight &&
lhs.idealHeight == rhs.idealHeight &&
lhs.maxHeight == rhs.maxHeight &&
lhs.alignment == rhs.alignment
}
}
}
// MARK: - Renderable
@@ -26,7 +26,15 @@ public struct OverlayModifier<Base: View, Overlay: View>: View {
// MARK: - Equatable Conformance
extension OverlayModifier: @preconcurrency Equatable where Base: Equatable, Overlay: Equatable {}
extension OverlayModifier: Equatable where Base: Equatable, Overlay: Equatable {
nonisolated public static func == (lhs: OverlayModifier<Base, Overlay>, rhs: OverlayModifier<Base, Overlay>) -> Bool {
MainActor.assumeIsolated {
lhs.base == rhs.base &&
lhs.overlay == rhs.overlay &&
lhs.alignment == rhs.alignment
}
}
}
// MARK: - Renderable