From 08c93254f4f2baf143aa04a0297b63e1b43813ad Mon Sep 17 00:00:00 2001 From: Diana Ma Date: Thu, 21 Aug 2025 16:01:41 +0000 Subject: [PATCH 1/3] enable xcframework --- Package.swift | 48 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/Package.swift b/Package.swift index 557981e..e82a6d8 100644 --- a/Package.swift +++ b/Package.swift @@ -1,7 +1,44 @@ // swift-tools-version:6.1 import CompilerPluginSupport import PackageDescription -import typealias Foundation.ProcessInfo + +func makeSwiftSyntaxDependency() -> [Package.Dependency] { + let xcFrameworksRepo: String = "https://github.com/ordo-one/swift-syntax-xcframeworks" + let officialSyntaxRepo: String = "https://github.com/swiftlang/swift-syntax" + + let syntaxUrl: String + #if os(iOS) + syntaxUrl = xcFrameworksRepo + #elseif os(Linux) + syntaxUrl = officialSyntaxRepo + #else + syntaxUrl = useSwiftSyntaxXcf ? xcFrameworksRepo : officialSyntaxRepo + #endif + + return [.package(url: syntaxUrl, from: "601.0.1")] +} + +func makeSwiftSyntaxTargetDependencies() -> [Target.Dependency] { + let xcFrameworkDependencies: [Target.Dependency] = [ + .product(name: "SwiftSyntaxWrapper", package: "swift-syntax-xcframeworks") + ] + + let standardSyntaxDependencies: [Target.Dependency] = [ + .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), + .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), + ] + + #if os(iOS) + return xcFrameworkDependencies + #elseif os(Linux) + return standardSyntaxDependencies + #else + if useSwiftSyntaxXcf { + return xcFrameworkDependencies + } + return standardSyntaxDependencies + #endif +} let package: Package = .init( name: "bijection", @@ -9,16 +46,11 @@ let package: Package = .init( products: [ .library(name: "Bijection", targets: ["Bijection"]), ], - dependencies: [ - .package(url: "https://github.com/swiftlang/swift-syntax", from: "601.0.0"), - ], + dependencies: makeSwiftSyntaxDependency(), targets: [ .macro( name: "BijectionMacro", - dependencies: [ - .product(name: "SwiftSyntaxMacros", package: "swift-syntax"), - .product(name: "SwiftCompilerPlugin", package: "swift-syntax"), - ] + dependencies: makeSwiftSyntaxTargetDependencies(), ), .target( name: "Bijection", From 2b25bfbd67178e7b9dc84bd77d4b52fe395c96a1 Mon Sep 17 00:00:00 2001 From: Diana Ma Date: Thu, 21 Aug 2025 16:04:05 +0000 Subject: [PATCH 2/3] macOS --- Package.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Package.swift b/Package.swift index e82a6d8..c315eef 100644 --- a/Package.swift +++ b/Package.swift @@ -1,6 +1,9 @@ // swift-tools-version:6.1 import CompilerPluginSupport import PackageDescription +import class Foundation.ProcessInfo + +let useSwiftSyntaxXcf: Bool = ProcessInfo.processInfo.environment["ORDO_USE_SWIFT_SYNTAX_XCF"] ?? "true" == "true" func makeSwiftSyntaxDependency() -> [Package.Dependency] { let xcFrameworksRepo: String = "https://github.com/ordo-one/swift-syntax-xcframeworks" From 3cf2bd7393f2cb06e816c665181201e5eb5e40c2 Mon Sep 17 00:00:00 2001 From: Diana Ma Date: Thu, 21 Aug 2025 16:14:14 +0000 Subject: [PATCH 3/3] @unknown default --- Sources/BijectionMacro/BijectionMacro.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Sources/BijectionMacro/BijectionMacro.swift b/Sources/BijectionMacro/BijectionMacro.swift index 40c3758..2a90be1 100644 --- a/Sources/BijectionMacro/BijectionMacro.swift +++ b/Sources/BijectionMacro/BijectionMacro.swift @@ -33,6 +33,9 @@ public struct BijectionMacro: PeerMacro { } } + context[.error, accessors] = "accessor list contains no getter" + return [] + @unknown default: context[.error, accessors] = "accessor list contains no getter" return [] }