diff --git a/Sources/ThreadLocal/ThreadLocal.swift b/Sources/ThreadLocal/ThreadLocal.swift index 9cd350b..c60464c 100644 --- a/Sources/ThreadLocal/ThreadLocal.swift +++ b/Sources/ThreadLocal/ThreadLocal.swift @@ -32,7 +32,7 @@ public final class ThreadLocal: Sendable { return unmanaged.takeUnretainedValue() } - @_unavailableFromAsync + @available(*, noasync) public init(_deallocator deallocator: Deallocator = .default) { _key = pthread_key_t() _deallocator = deallocator @@ -51,14 +51,14 @@ public final class ThreadLocal: Sendable { precondition(status == 0, "pthread_key_create failed with status code \(status)") } + @available(*, noasync) @inlinable - @_unavailableFromAsync func _makeBox(_ value: Value) -> _Box { _Box(_value: value, deallocator: _deallocator) } + @available(*, noasync) @inlinable - @_unavailableFromAsync public func _get(default: @autoclosure () -> Value) -> Value { if let value = _box?._value { return value @@ -69,8 +69,8 @@ public final class ThreadLocal: Sendable { } } + @available(*, noasync) @inlinable - @_unavailableFromAsync public func _set(_ newValue: Value?) { let unmanaged = pthread_getspecific(_key).map { Unmanaged<_Box>.fromOpaque($0) diff --git a/Sources/ThreadLocalMacros/ThreadLocalMacro.swift b/Sources/ThreadLocalMacros/ThreadLocalMacro.swift index edfb9ec..b282eac 100644 --- a/Sources/ThreadLocalMacros/ThreadLocalMacro.swift +++ b/Sources/ThreadLocalMacros/ThreadLocalMacro.swift @@ -43,20 +43,20 @@ extension ThreadLocalMacro: AccessorMacro { } let getAccessor: AccessorDeclSyntax = if let initializer = binding.initializer { """ - get { + @available(*, noasync) get { _\(identifier)._get(default: \(initializer.value)) } """ } else { """ - get { + @available(*, noasync) get { _\(identifier)._get(default: nil) } """ } let setAccessor: AccessorDeclSyntax = """ - set { + @available(*, noasync) set { _\(identifier)._set(newValue) } """ diff --git a/Tests/ThreadLocalTests/ThreadLocalMacroTests.swift b/Tests/ThreadLocalTests/ThreadLocalMacroTests.swift index 1fee28e..8bd3394 100644 --- a/Tests/ThreadLocalTests/ThreadLocalMacroTests.swift +++ b/Tests/ThreadLocalTests/ThreadLocalMacroTests.swift @@ -31,10 +31,10 @@ struct ThreadLocalMacroTests { expandedSource: """ static var counter: Int { - get { + @available(*, noasync) get { _counter._get(default: 0) } - set { + @available(*, noasync) set { _counter._set(newValue) } } @@ -55,10 +55,10 @@ struct ThreadLocalMacroTests { expandedSource: """ @inlinable static var counter: Int { - get { + @available(*, noasync) get { _counter._get(default: 0) } - set { + @available(*, noasync) set { _counter._set(newValue) } } @@ -79,10 +79,10 @@ struct ThreadLocalMacroTests { expandedSource: """ static var ctx: OpaquePointer { - get { + @available(*, noasync) get { _ctx._get(default: ZSTD_createCCtx()) } - set { + @available(*, noasync) set { _ctx._set(newValue) } } @@ -104,10 +104,10 @@ struct ThreadLocalMacroTests { expandedSource: """ public static var counter: Int { - get { + @available(*, noasync) get { _counter._get(default: 0) } - set { + @available(*, noasync) set { _counter._set(newValue) } } @@ -148,10 +148,10 @@ struct ThreadLocalMacroTests { expandedSource: """ static var counter: Int { - get { + @available(*, noasync) get { _counter._get(default: 0) } - set { + @available(*, noasync) set { _counter._set(newValue) } }