From 24d9aa7230bc265c10c31def9503140efce4f2db Mon Sep 17 00:00:00 2001 From: ivanlisovyi Date: Tue, 30 Apr 2024 12:22:35 +0200 Subject: [PATCH] Add support for package access modifier to DependencyClient macro --- .../DependencyClientMacro.swift | 6 +++++ .../DependencyClientMacroTests.swift | 27 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/Sources/DependenciesMacrosPlugin/DependencyClientMacro.swift b/Sources/DependenciesMacrosPlugin/DependencyClientMacro.swift index 72882612..ff9250f7 100644 --- a/Sources/DependenciesMacrosPlugin/DependencyClientMacro.swift +++ b/Sources/DependenciesMacrosPlugin/DependencyClientMacro.swift @@ -213,6 +213,7 @@ public enum DependencyClientMacro: MemberAttributeMacro, MemberMacro { private enum Access: Comparable { case `private` case `internal` + case `package` case `public` init?(modifiers: DeclModifierListSyntax) { @@ -224,6 +225,9 @@ private enum Access: Comparable { case .keyword(.internal): self = .internal return + case .keyword(.package): + self = .package + return case .keyword(.public): self = .public return @@ -240,6 +244,8 @@ private enum Access: Comparable { return .keyword(.private) case .internal: return nil + case .package: + return .keyword(.package) case .public: return .keyword(.public) } diff --git a/Tests/DependenciesMacrosPluginTests/DependencyClientMacroTests.swift b/Tests/DependenciesMacrosPluginTests/DependencyClientMacroTests.swift index 876a9d6b..60c2dfeb 100644 --- a/Tests/DependenciesMacrosPluginTests/DependencyClientMacroTests.swift +++ b/Tests/DependenciesMacrosPluginTests/DependencyClientMacroTests.swift @@ -419,6 +419,33 @@ final class DependencyClientMacroTests: BaseTestCase { } } + func testPackage() { + assertMacro { + """ + @DependencyClient + package struct Client { + package var endpoint: () -> Void + } + """ + } expansion: { + """ + package struct Client { + @DependencyEndpoint + package var endpoint: () -> Void + + package init( + endpoint: @escaping () -> Void + ) { + self.endpoint = endpoint + } + + package init() { + } + } + """ + } + } + func testSendable() { assertMacro { """