From 6b3a196a3ff9b4d3122d7a1eefdb192c15dc84ca Mon Sep 17 00:00:00 2001 From: creatixchu Date: Thu, 24 Sep 2026 19:24:42 +0800 Subject: [PATCH] fix(cua): compile batch attribute regression assertions --- .../experimental/cua/native/Sources/CuaNative/AXAccess.swift | 3 ++- .../experimental/cua/native/tests/swift/AXFailureTests.swift | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/experimental/cua/native/Sources/CuaNative/AXAccess.swift b/packages/experimental/cua/native/Sources/CuaNative/AXAccess.swift index a3cd779157..f4004fd53d 100644 --- a/packages/experimental/cua/native/Sources/CuaNative/AXAccess.swift +++ b/packages/experimental/cua/native/Sources/CuaNative/AXAccess.swift @@ -172,9 +172,10 @@ final class AXAccess { let error = AXUIElementCopyMultipleAttributeValues(element, names as CFArray, [], &output) if error == .notImplemented || error == .attributeUnsupported { return nil } guard error == .success else { throw failure(error, "read node attributes") } - guard let output, let values = output as? [AnyObject], values.count == names.count else { + guard let output, CFArrayGetCount(output) == names.count else { throw NativeFailure(code: "NATIVE_ERROR", message: "Accessibility batch returned mismatched attribute values") } + let values = output as [AnyObject] return Dictionary(uniqueKeysWithValues: zip(names, values)) } static func batchAttribute(_ value: CFTypeRef, name: String) throws -> CFTypeRef? { diff --git a/packages/experimental/cua/native/tests/swift/AXFailureTests.swift b/packages/experimental/cua/native/tests/swift/AXFailureTests.swift index 46ec1b267e..d5aef245ba 100644 --- a/packages/experimental/cua/native/tests/swift/AXFailureTests.swift +++ b/packages/experimental/cua/native/tests/swift/AXFailureTests.swift @@ -30,7 +30,7 @@ private func wrappedAXError(_ code: AXError) throws -> AXValue { let position = try #require(AXValueCreate(.cgPoint, &point)) let values: [CFTypeRef] = ["Title" as CFString, kCFBooleanTrue, NSNumber(value: 7), [] as CFArray, position] for value in values { - let decoded = try #require(AXAccess.batchAttribute(value, name: "AXValue")) + let decoded = try #require(try AXAccess.batchAttribute(value, name: "AXValue")) #expect(CFGetTypeID(decoded) == CFGetTypeID(value)) #expect(CFEqual(decoded, value)) }