From fb4b70f3c791b0b7fe69dbbe4664a5823bdb6c14 Mon Sep 17 00:00:00 2001 From: Brandon Williams Date: Mon, 27 Jan 2025 16:11:58 -0800 Subject: [PATCH] Fix ambiguous initializer in SharedReader with optionals. --- Sources/Sharing/SharedReaderKey.swift | 3 ++- Tests/SharingTests/CompileTimeTests.swift | 12 ++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Sources/Sharing/SharedReaderKey.swift b/Sources/Sharing/SharedReaderKey.swift index 5ccdedc..2cf163c 100644 --- a/Sources/Sharing/SharedReaderKey.swift +++ b/Sources/Sharing/SharedReaderKey.swift @@ -101,6 +101,7 @@ extension SharedReader { /// /// - Parameter key: A shared key associated with the shared reference. It is responsible for /// loading the shared reference's value from some external source. + @_disfavoredOverload public init(_ key: some SharedReaderKey) where Value == Wrapped? { self.init(wrappedValue: nil, key) } @@ -108,7 +109,7 @@ extension SharedReader { @_disfavoredOverload @_documentation(visibility: private) public init(_ key: some SharedKey) where Value == Wrapped? { - self.init(key) + self.init(wrappedValue: nil, key) } /// Creates a shared reference to a read-only value using a shared key with a default value. diff --git a/Tests/SharingTests/CompileTimeTests.swift b/Tests/SharingTests/CompileTimeTests.swift index 6b040c3..492cfce 100644 --- a/Tests/SharingTests/CompileTimeTests.swift +++ b/Tests/SharingTests/CompileTimeTests.swift @@ -30,8 +30,20 @@ func testSharedReaderLoadOverload() async throws { try await shared.load(.count) } +func testSharedReaderKeyWithDefault() { + @SharedReader(.count) + var count1 + @Shared(.count) var count2 +} + extension SharedKey where Self == InMemoryKey { fileprivate static var count: Self { .inMemory("count") } } + +extension SharedReaderKey where Self == AppStorageKey.Default { + public static var count: Self { + Self[.appStorage("count"), default: nil] + } +}