diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6750ad..ceb2797 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,7 @@ jobs: strategy: matrix: xcode: + - '16.1' - '16.0' - '15.4' package: diff --git a/Examples/Package.resolved b/Examples/Package.resolved index bb020e5..e75c36f 100644 --- a/Examples/Package.resolved +++ b/Examples/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax", "state" : { - "revision" : "303e5c5c36d6a558407d364878df131c3546fad8", - "version" : "510.0.2" + "revision" : "0687f71944021d616d34d922343dcef086855920", + "version" : "600.0.1" } } ], diff --git a/Examples/Package@swift-6.0.swift b/Examples/Package@swift-6.0.swift new file mode 100644 index 0000000..0eae257 --- /dev/null +++ b/Examples/Package@swift-6.0.swift @@ -0,0 +1,38 @@ +// swift-tools-version: 6.0 + +import PackageDescription + +let package = Package( + name: "Examples", + platforms: [ + .macOS(.v10_15), + .iOS(.v13), + .tvOS(.v13), + .watchOS(.v6), + .macCatalyst(.v13), + ], + products: [ + .library( + name: "Examples", + targets: ["Examples"] + ) + ], + dependencies: [ + .package(name: "swift-spyable", path: "../") + ], + targets: [ + .target( + name: "Examples", + dependencies: [ + .product(name: "Spyable", package: "swift-spyable") + ], + path: "Sources" + ), + .testTarget( + name: "ExamplesTests", + dependencies: ["Examples"], + path: "Tests" + ), + ], + swiftLanguageModes: [.v6] +) diff --git a/Package.resolved b/Package.resolved index bb020e5..e75c36f 100644 --- a/Package.resolved +++ b/Package.resolved @@ -5,8 +5,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax", "state" : { - "revision" : "303e5c5c36d6a558407d364878df131c3546fad8", - "version" : "510.0.2" + "revision" : "0687f71944021d616d34d922343dcef086855920", + "version" : "600.0.1" } } ], diff --git a/Package.swift b/Package.swift index 7a90b1b..e1df77c 100644 --- a/Package.swift +++ b/Package.swift @@ -19,7 +19,7 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"601.0.0-prerelease") + .package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"601.0.0") ], targets: [ .macro( diff --git a/Package@swift-6.0.swift b/Package@swift-6.0.swift new file mode 100644 index 0000000..d4f7d25 --- /dev/null +++ b/Package@swift-6.0.swift @@ -0,0 +1,47 @@ +// swift-tools-version: 6.0 + +import CompilerPluginSupport +import PackageDescription + +let package = Package( + name: "swift-spyable", + platforms: [ + .macOS(.v10_15), + .iOS(.v13), + .tvOS(.v13), + .watchOS(.v6), + .macCatalyst(.v13), + ], + products: [ + .library( + name: "Spyable", + targets: ["Spyable"] + ) + ], + dependencies: [ + .package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"601.0.0") + ], + targets: [ + .macro( + name: "SpyableMacro", + dependencies: [ + .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), + .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), + ] + ), + .target( + name: "Spyable", + dependencies: [ + "SpyableMacro" + ] + ), + .testTarget( + name: "SpyableMacroTests", + dependencies: [ + "SpyableMacro", + .product(name: "SwiftSyntaxMacrosTestSupport", package: "swift-syntax"), + ] + ), + ], + swiftLanguageModes: [.v6] +) diff --git a/Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift b/Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift index 48c8510..872e781 100644 --- a/Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift +++ b/Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift @@ -101,6 +101,10 @@ extension ArrayTypeSyntax: TypeSyntaxSupportingGenerics { } } +#if compiler(>=6.0) +extension GenericArgumentClauseSyntax: @retroactive TypeSyntaxProtocol {} +#endif + extension GenericArgumentClauseSyntax: TypeSyntaxSupportingGenerics { fileprivate var nestedTypeSyntaxes: [TypeSyntax] { arguments.map { $0.argument } diff --git a/Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift b/Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift index 157324d..9865930 100644 --- a/Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift +++ b/Sources/SpyableMacro/Factories/VariablesImplementationFactory.swift @@ -43,8 +43,6 @@ import SwiftSyntaxBuilder /// - Important: The variable declaration must have exactly one binding. Any deviation from this will result in /// an error diagnostic produced by the macro. struct VariablesImplementationFactory { - private let accessorRemovalVisitor = AccessorRemovalVisitor() - @MemberBlockItemListBuilder func variablesDeclarations( protocolVariableDeclaration: VariableDeclSyntax @@ -60,6 +58,7 @@ struct VariablesImplementationFactory { if binding.typeAnnotation?.type.is(OptionalTypeSyntax.self) == true || binding.typeAnnotation?.type.is(ImplicitlyUnwrappedOptionalTypeSyntax.self) == true { + let accessorRemovalVisitor = AccessorRemovalVisitor() accessorRemovalVisitor.visit(protocolVariableDeclaration) /* var name: String