From 99b2401d881def917c4180997df93e7f7c5d176f Mon Sep 17 00:00:00 2001 From: Kyle Date: Thu, 16 Jul 2026 01:39:43 +0800 Subject: [PATCH] Remove AnyAttribute compiler workaround --- Package.swift | 7 - .../OpenSwiftUI/Util/AnyAttributeFix.swift | 197 ------------- .../Data/Preference/View_Indirect.swift | 4 - .../Render/RasterizationOptions.swift | 6 - .../Util/AnyAttributeFix.swift | 259 ------------------ .../Util/AttributeGraphAdditions.swift | 6 - 6 files changed, 479 deletions(-) delete mode 100644 Sources/OpenSwiftUI/Util/AnyAttributeFix.swift delete mode 100644 Sources/OpenSwiftUICore/Util/AnyAttributeFix.swift diff --git a/Package.swift b/Package.swift index ba4813716..26871e709 100644 --- a/Package.swift +++ b/Package.swift @@ -154,9 +154,6 @@ let attributeGraphCondition = envBoolValue("OPENATTRIBUTESHIMS_ATTRIBUTEGRAPH", let renderBoxCondition = envBoolValue("RENDERBOX", default: buildForDarwinPlatform && !isSPIBuild) -// For #39 -let anyAttributeFix = envBoolValue("ANY_ATTRIBUTE_FIX", default: !buildForDarwinPlatform) - let linkCoreUI = envBoolValue("LINK_COREUI", default: buildForDarwinPlatform && !isSPIBuild) let linkCoreSVG = envBoolValue("LINK_CORESVG", default: buildForDarwinPlatform && !isSPIBuild) let linkSFSymbols = envBoolValue("LINK_SFSYMBOLS", default: buildForDarwinPlatform && !isSPIBuild) @@ -244,10 +241,6 @@ if !compatibilityTestCondition { sharedSwiftSettings.append(.define("OPENSWIFTUI")) } -if anyAttributeFix { - sharedSwiftSettings.append(.define("OPENSWIFTUI_ANY_ATTRIBUTE_FIX")) -} - if development { sharedSwiftSettings.append(.define("OPENSWIFTUI_DEVELOPMENT")) } diff --git a/Sources/OpenSwiftUI/Util/AnyAttributeFix.swift b/Sources/OpenSwiftUI/Util/AnyAttributeFix.swift deleted file mode 100644 index ed7defb19..000000000 --- a/Sources/OpenSwiftUI/Util/AnyAttributeFix.swift +++ /dev/null @@ -1,197 +0,0 @@ -// -// AnyAttributeFix.swift -// OpenSwiftUI - -#if OPENSWIFTUI_ANY_ATTRIBUTE_FIX -package import OpenAttributeGraphShims - -package typealias AnyAttribute = OpenSwiftUICore.AnyAttribute -package typealias AttributeInfo = OpenSwiftUICore.AttributeInfo - -package typealias AttributeType = OpenSwiftUICore.AttributeType - -extension AnyAttribute { - package static var `nil`: AnyAttribute { AnyAttribute(rawValue: 0x2) } - - package static var currentWasModified: Bool { false } - - package var source: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } - - package var info: AttributeInfo { - preconditionFailure("#39") - } - - package var graph: Graph { - preconditionFailure("#39") - } - - package func invalidateValue() { - preconditionFailure("#39") - } - - package func createIndirect() -> AnyAttribute { - preconditionFailure("#39") - } - - package var subgraph: Subgraph { - preconditionFailure("#39") - } - - package var subgraph2: Subgraph? { - preconditionFailure("#39") - } -} - -extension AnyAttribute { - package init(_ attribute: Attribute) { - self = Swift.unsafeBitCast(attribute, to: AnyAttribute.self) - } - - package func unsafeCast(to type: Value.Type) -> Attribute { - Swift.unsafeBitCast(self, to: Attribute.self) - } - - package static var current: AnyAttribute? { - preconditionFailure("#39") - } - - package func unsafeOffset(at offset: Int) -> AnyAttribute { - preconditionFailure("#39") - } - - package func setFlags(_ newFlags: Flags, mask: Flags) { - preconditionFailure("#39") - } - - package func addInput(_ attribute: AnyAttribute, options: OAGInputOptions = [], token: Int) { - preconditionFailure("#39") - } - - package func addInput(_ attribute: Attribute, options: OAGInputOptions = [], token: Int) { - preconditionFailure("#39") - } - - package func visitBody(_ visitor: inout Visitor) where Visitor: AttributeBodyVisitor { - preconditionFailure("#39") - } - - package func mutateBody(as: Value.Type, invalidating: Bool, _ body: (inout Value) -> Void) { - preconditionFailure("#39") - } - - package func breadthFirstSearch(options: SearchOptions = [], _: (AnyAttribute) -> Bool) -> Bool { - preconditionFailure("#39") - } - - package var _bodyType: any Any.Type { - preconditionFailure("#39") - } - - package var _bodyPointer: UnsafeRawPointer { - preconditionFailure("#39") - } - - package var valueType: any Any.Type { - preconditionFailure("#39") - } - - package var indirectDependency: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } -} - -extension Attribute { - package init(identifier: AnyAttribute) { - self = Swift.unsafeBitCast(identifier.rawValue, to: Attribute.self) - } - - package var identifier: AnyAttribute { - get { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } - nonmutating set { preconditionFailure("#39") } - } -} - -extension AnyWeakAttribute { - package var attribute: AnyAttribute? { - preconditionFailure("#39") - } - - package init(_ attribute: AnyAttribute?) { - preconditionFailure("#39") - } -} - -extension IndirectAttribute { - package var identifier: AnyAttribute { - AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) - } -} - -extension AnyRuleContext { - package init(attribute: AnyAttribute) { - self = Swift.unsafeBitCast(attribute.rawValue, to: AnyRuleContext.self) - } - - package var attribute: AnyAttribute { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } -} - -extension AnyOptionalAttribute { - package static var current: AnyOptionalAttribute { - preconditionFailure("#39") - } - - package var identifier: AnyAttribute { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } - - package var attribute: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } -} - -extension Graph { - package func onInvalidation(_ callback: @escaping (AnyAttribute) -> Void) { - preconditionFailure("#39") - } -} - -// NOTE: Can't do Subgraph.init here -package func Subgraph(graph: Graph, attribute: AnyAttribute) -> Subgraph { - preconditionFailure("#39") -} - -extension Subgraph { - package func forEach(_ flags: AnyAttribute.Flags, _ callback: (AnyAttribute) -> Void) { - preconditionFailure("#39") - } - - package func isDirty(flags: AnyAttribute.Flags) -> Bool { - preconditionFailure("#39") - } - - package func update(flags: AnyAttribute.Flags) { - preconditionFailure("#39") - } -} - -extension Graph { - package static func anyInputsChanged(excluding excludedInputs: [AnyAttribute]) -> Bool { - preconditionFailure("#39") - } -} - -extension Attribute { - package func setFlags(_ newFlags: AnyAttribute.Flags, mask: AnyAttribute.Flags) { - preconditionFailure("#39") - } - - var flags: AnyAttribute.Flags { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } -} - -#endif diff --git a/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift b/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift index f97a8603f..e0f255178 100644 --- a/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift +++ b/Sources/OpenSwiftUICore/Data/Preference/View_Indirect.swift @@ -5,11 +5,7 @@ // Audited for 6.0.87 // Status: Complete -#if canImport(Darwin) package import OpenAttributeGraphShims -#else -import OpenAttributeGraphShims -#endif extension _ViewInputs { package func makeIndirectOutputs() -> _ViewOutputs { diff --git a/Sources/OpenSwiftUICore/Render/RasterizationOptions.swift b/Sources/OpenSwiftUICore/Render/RasterizationOptions.swift index cc24e7d1b..f7f709258 100644 --- a/Sources/OpenSwiftUICore/Render/RasterizationOptions.swift +++ b/Sources/OpenSwiftUICore/Render/RasterizationOptions.swift @@ -136,7 +136,6 @@ package struct RasterizationOptions: Equatable { set { flags.setValue(newValue, for: .allowsPackedDrawable) } } - #if !OPENSWIFTUI_ANY_ATTRIBUTE_FIX package var resolvedColorMode: ORBColor.Mode { if let mode = rbColorMode { return ORBColor.Mode(rawValue: mode) @@ -152,14 +151,9 @@ package struct RasterizationOptions: Equatable { } } } - #endif package var colorSpace: ORBColor.ColorSpace { - #if OPENSWIFTUI_ANY_ATTRIBUTE_FIX - .default - #else resolvedColorMode.workingColorSpace - #endif } package var alphaOnly: Bool { diff --git a/Sources/OpenSwiftUICore/Util/AnyAttributeFix.swift b/Sources/OpenSwiftUICore/Util/AnyAttributeFix.swift deleted file mode 100644 index 8c3419715..000000000 --- a/Sources/OpenSwiftUICore/Util/AnyAttributeFix.swift +++ /dev/null @@ -1,259 +0,0 @@ -// -// AnyAttributeFix.swift -// OpenSwiftUICore - -#if OPENSWIFTUI_ANY_ATTRIBUTE_FIX -package import OpenAttributeGraphShims - -// This is a workaround to partially "fix" the Swift compiler bug on non-Darwin platforms. -// "Fix" here means we do not have to write #if canImport(Darwin) everywhere. -// See #39 for more details. -package struct AnyAttribute: RawRepresentable, Hashable { - package var rawValue: UInt32 - package init(rawValue: UInt32) { - self.rawValue = rawValue - } - - - package struct Flags: OptionSet { - package let rawValue: UInt8 - - package init(rawValue: UInt8) { - self.rawValue = rawValue - } - - package static let none: Flags = Flags(rawValue: 0) - package static let all: Flags = Flags(rawValue: 0xFF) - - package static var transactional: Self { - .init(rawValue: 1 << 0) - } - - package static var removable: Self { - .init(rawValue: 1 << 1) - } - - package static var invalidatable: Self { - .init(rawValue: 1 << 2) - } - - package static var scrapeable: Self { - .init(rawValue: 1 << 3) - } - - package static var secondary: Self { - .init(rawValue: 1 << 0) - } - } -} - -package struct AttributeInfo { - package var type: UnsafePointer - package var body: UnsafeRawPointer -} - -package struct AttributeType { - package var typeID: Metadata - package var valueTypeID: Metadata -} - -extension AnyAttribute { - package var description: String { "#\(rawValue)" } - - package static var `nil`: AnyAttribute { AnyAttribute(rawValue: 0x2) } - - package static var currentWasModified: Bool { false } - - package var source: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } - - package var info: AttributeInfo { - preconditionFailure("#39") - } - - package var graph: Graph { - preconditionFailure("#39") - } - - package func invalidateValue() { - preconditionFailure("#39") - } - - package var subgraph: Subgraph { - preconditionFailure("#39") - } - - package var subgraph2: Subgraph? { - preconditionFailure("#39") - } -} - -extension AnyAttribute { - package init(_ attribute: Attribute) { - self = Swift.unsafeBitCast(attribute, to: AnyAttribute.self) - } - - package func unsafeCast(to type: Value.Type) -> Attribute { - Swift.unsafeBitCast(self, to: Attribute.self) - } - - package static var current: AnyAttribute? { - preconditionFailure("#39") - } - - package func unsafeOffset(at offset: Int) -> AnyAttribute { - preconditionFailure("#39") - } - - package func setFlags(_ newFlags: Subgraph.Flags, mask: Subgraph.Flags) { - preconditionFailure("#39") - } - - package func addInput(_ attribute: AnyAttribute, options: OAGInputOptions = [], token: Int) { - preconditionFailure("#39") - } - - package func addInput(_ attribute: Attribute, options: OAGInputOptions = [], token: Int) { - preconditionFailure("#39") - } - - package func visitBody(_ visitor: inout Visitor) where Visitor: AttributeBodyVisitor { - preconditionFailure("#39") - } - - package func mutateBody(as: Value.Type, invalidating: Bool, _ body: (inout Value) -> Void) { - preconditionFailure("#39") - } - - package func breadthFirstSearch(options: SearchOptions = [], _: (AnyAttribute) -> Bool) -> Bool { - preconditionFailure("#39") - } - - package var _bodyType: any Any.Type { - preconditionFailure("#39") - } - - package var _bodyPointer: UnsafeRawPointer { - preconditionFailure("#39") - } - - package var valueType: any Any.Type { - preconditionFailure("#39") - } - - package var indirectDependency: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } -} - -extension Attribute { - package init(identifier: AnyAttribute) { - self = Swift.unsafeBitCast(identifier.rawValue, to: Attribute.self) - } - - package var identifier: AnyAttribute { - get { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } - nonmutating set { preconditionFailure("#39") } - } -} - -extension AnyWeakAttribute { - package var attribute: AnyAttribute? { - preconditionFailure("#39") - } - - package init(_ attribute: AnyAttribute?) { - preconditionFailure("#39") - } -} - -extension IndirectAttribute { - package var identifier: AnyAttribute { - AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) - } -} - -extension AnyRuleContext { - package init(attribute: AnyAttribute) { - self = Swift.unsafeBitCast(attribute.rawValue, to: AnyRuleContext.self) - } - - package var attribute: AnyAttribute { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } -} - -extension AnyOptionalAttribute { - package static var current: AnyOptionalAttribute { - preconditionFailure("#39") - } - - package var identifier: AnyAttribute { AnyAttribute(rawValue: Swift.unsafeBitCast(self, to: UInt32.self)) } - - package var attribute: AnyAttribute? { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } - - package init(_ attribute: AnyAttribute?) { - if let attribute { - self = Swift.unsafeBitCast(attribute.rawValue, to: AnyOptionalAttribute.self) - } else { - self = AnyOptionalAttribute() - } - } -} - -extension Graph { - package func onInvalidation(_ callback: @escaping (AnyAttribute) -> Void) { - preconditionFailure("#39") - } -} - -// NOTE: Can't do Subgraph.init here -package func Subgraph(graph: Graph, attribute: AnyAttribute) -> Subgraph { - preconditionFailure("#39") -} - -extension Subgraph { - package func forEach(_ flags: AnyAttribute.Flags, _ callback: (AnyAttribute) -> Void) { - preconditionFailure("#39") - } - - package func isDirty(flags: AnyAttribute.Flags) -> Bool { - preconditionFailure("#39") - } - - package func update(flags: AnyAttribute.Flags) { - preconditionFailure("#39") - } -} - -extension Rule where Self: Hashable { - package func cachedValue( - options: OAGCachedValueOptions = [], - owner: AnyAttribute? - ) -> Value { - preconditionFailure("#39") - } -} - -extension Graph { - package static func anyInputsChanged(excluding excludedInputs: [AnyAttribute]) -> Bool { - preconditionFailure("#39") - } -} - -extension Attribute { - package func setFlags(_ newFlags: AnyAttribute.Flags, mask: AnyAttribute.Flags) { - preconditionFailure("#39") - } - - var flags: AnyAttribute.Flags { - get { preconditionFailure("#39") } - nonmutating set { preconditionFailure("#39") } - } -} - -#endif diff --git a/Sources/OpenSwiftUICore/Util/AttributeGraphAdditions.swift b/Sources/OpenSwiftUICore/Util/AttributeGraphAdditions.swift index 441f54d3d..ad69da1c6 100644 --- a/Sources/OpenSwiftUICore/Util/AttributeGraphAdditions.swift +++ b/Sources/OpenSwiftUICore/Util/AttributeGraphAdditions.swift @@ -100,7 +100,6 @@ package protocol InvalidatableAttribute: _AttributeBody { static func willInvalidate(attribute: AnyAttribute) } -#if !OPENSWIFTUI_ANY_ATTRIBUTE_FIX extension AnyAttribute.Flags { package static var transactional: Subgraph.Flags { .init(rawValue: 1 << 0) @@ -126,7 +125,6 @@ extension Subgraph.ChildFlags { .init(rawValue: 1 << 0) } } -#endif extension Subgraph { package func addSecondaryChild(_ child: Subgraph) { @@ -184,11 +182,7 @@ extension Attribute { extension WeakAttribute { package var uncheckedIdentifier: Attribute { - #if OPENSWIFTUI_ANY_ATTRIBUTE_FIX - _openSwiftUIUnimplementedFailure() - #else Attribute(identifier: AnyWeakAttribute(self)._details.identifier) - #endif } package func allowsAsyncUpdate() -> Bool {