diff --git a/Sources/X509/CryptographicMessageSyntax/CMSSignature.swift b/Sources/X509/CryptographicMessageSyntax/CMSSignature.swift index 60d17ee0..de58b5af 100644 --- a/Sources/X509/CryptographicMessageSyntax/CMSSignature.swift +++ b/Sources/X509/CryptographicMessageSyntax/CMSSignature.swift @@ -13,7 +13,7 @@ //===----------------------------------------------------------------------===// import SwiftASN1 -#if canImport(Darwin) +#if canImport(Darwin) || swift(>=5.9.1) import Foundation #else @preconcurrency import Foundation diff --git a/Sources/X509/OCSP/OCSPPolicy.swift b/Sources/X509/OCSP/OCSPPolicy.swift index 3cd2cad6..78863bf0 100644 --- a/Sources/X509/OCSP/OCSPPolicy.swift +++ b/Sources/X509/OCSP/OCSPPolicy.swift @@ -14,7 +14,7 @@ import SwiftASN1 import Crypto -#if canImport(Darwin) +#if canImport(Darwin) || swift(>=5.9.1) import Foundation #else @preconcurrency import Foundation diff --git a/Sources/_CertificateInternals/_TinyArray.swift b/Sources/_CertificateInternals/_TinyArray.swift index 4507fce2..1f02bc23 100644 --- a/Sources/_CertificateInternals/_TinyArray.swift +++ b/Sources/_CertificateInternals/_TinyArray.swift @@ -32,6 +32,20 @@ extension _TinyArray: Equatable where Element: Equatable {} extension _TinyArray: Hashable where Element: Hashable {} extension _TinyArray: Sendable where Element: Sendable {} +extension _TinyArray: ExpressibleByArrayLiteral { + @inlinable + public init(arrayLiteral elements: Element...) { + switch elements.count { + case 0: + self = .init() + case 1: + self = .init(CollectionOfOne(elements[0])) + default: + self = .init(elements) + } + } +} + extension _TinyArray: RandomAccessCollection { public typealias Element = Element diff --git a/Tests/CertificateInternalsTests/TinyArrayTests.swift b/Tests/CertificateInternalsTests/TinyArrayTests.swift index 1b3e0e7b..bf0caa69 100644 --- a/Tests/CertificateInternalsTests/TinyArrayTests.swift +++ b/Tests/CertificateInternalsTests/TinyArrayTests.swift @@ -67,6 +67,15 @@ final class TinyArrayTests: XCTestCase { XCTAssertEqual(Array(_TinyArray([1, 2, 3, 4, 5])), [1, 2, 3, 4, 5]) } + func testExpressibleByArrayLiteral() { + XCTAssertEqual(Array([] as _TinyArray), []) + XCTAssertEqual(Array([1] as _TinyArray), [1]) + XCTAssertEqual(Array([1, 2] as _TinyArray), [1, 2]) + XCTAssertEqual(Array([1, 2, 3] as _TinyArray), [1, 2, 3]) + XCTAssertEqual(Array([1, 2, 3, 4] as _TinyArray), [1, 2, 3, 4]) + XCTAssertEqual(Array([1, 2, 3, 4, 5] as _TinyArray), [1, 2, 3, 4, 5]) + } + func testAppend() { assertEqual([1]) { array in array.append(1) @@ -339,11 +348,3 @@ final class TinyArrayTests: XCTestCase { ) } } - -extension _TinyArray: ExpressibleByArrayLiteral { - public typealias ArrayLiteralElement = Element - - public init(arrayLiteral elements: Element...) { - self.init(elements) - } -} diff --git a/Tests/X509Tests/OCSPPolicyVerifierTests.swift b/Tests/X509Tests/OCSPPolicyVerifierTests.swift index c7f4fd8c..1df886ff 100644 --- a/Tests/X509Tests/OCSPPolicyVerifierTests.swift +++ b/Tests/X509Tests/OCSPPolicyVerifierTests.swift @@ -16,7 +16,7 @@ import XCTest import Crypto import SwiftASN1 @testable import X509 -#if canImport(Darwin) +#if canImport(Darwin) || swift(>=5.9.1) import Foundation #else @preconcurrency import Foundation