Skip to content

Commit f3e5683

Browse files
authored
Merge pull request #138 from Matejkob/update-gh-action
Update lib to swift-syntax 601
2 parents f6b90c8 + 6090c92 commit f3e5683

File tree

5 files changed

+91
-68
lines changed

5 files changed

+91
-68
lines changed

.github/workflows/ci.yml

Lines changed: 51 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,22 @@ concurrency:
1919
jobs:
2020
macos:
2121
name: macOS - ${{ matrix.package }} (Xcode ${{ matrix.xcode }})
22-
runs-on: macos-14
22+
runs-on: ${{ matrix.os }}
2323
strategy:
2424
matrix:
25-
xcode:
26-
- '16.1'
27-
- '16.0'
28-
- '15.4'
29-
package:
30-
- 'main'
31-
- 'Examples'
25+
include:
26+
- os: macos-15
27+
xcode: '16.2'
28+
package: 'main'
29+
- os: macos-15
30+
xcode: '16.2'
31+
package: 'Examples'
32+
- os: macos-14
33+
xcode: '15.4'
34+
package: 'main'
35+
- os: macos-14
36+
xcode: '15.4'
37+
package: 'Examples'
3238
steps:
3339
- name: Checkout repository
3440
uses: actions/checkout@v4
@@ -82,37 +88,37 @@ jobs:
8288
- name: Run tests
8389
run: swift test
8490

85-
windows:
86-
name: Windows - ${{ matrix.package }} (Swift ${{ matrix.swift }})
87-
runs-on: windows-latest
88-
strategy:
89-
matrix:
90-
swift:
91-
- '6.0'
92-
- '5.10'
93-
- '5.9.1' # Macros has been added to Swift on Windows in 5.9.1 version
94-
package:
95-
- 'main'
96-
- 'Examples'
97-
steps:
98-
- name: Checkout repository
99-
uses: actions/checkout@v4
100-
101-
- name: Install Swift
102-
uses: compnerd/gha-setup-swift@main
103-
with:
104-
branch: swift-${{ matrix.swift }}-release
105-
tag: ${{ matrix.swift }}-RELEASE
106-
107-
# Set working directory to Examples if testing the examples package
108-
- name: Set working directory
109-
run: |
110-
if ("${{ matrix.package }}" -eq "Examples") {
111-
cd Examples
112-
}
113-
114-
- name: Build package
115-
run: swift build
91+
# windows:
92+
# name: Windows - ${{ matrix.package }} (Swift ${{ matrix.swift }})
93+
# runs-on: windows-latest
94+
# strategy:
95+
# matrix:
96+
# swift:
97+
# - '6.0'
98+
# - '5.10'
99+
# - '5.9.1' # Macros has been added to Swift on Windows in 5.9.1 version
100+
# package:
101+
# - 'main'
102+
# - 'Examples'
103+
# steps:
104+
# - name: Checkout repository
105+
# uses: actions/checkout@v4
106+
#
107+
# - name: Install Swift
108+
# uses: compnerd/gha-setup-swift@main
109+
# with:
110+
# branch: swift-${{ matrix.swift }}-release
111+
# tag: ${{ matrix.swift }}-RELEASE
112+
#
113+
# # Set working directory to Examples if testing the examples package
114+
# - name: Set working directory
115+
# run: |
116+
# if ("${{ matrix.package }}" -eq "Examples") {
117+
# cd Examples
118+
# }
119+
#
120+
# - name: Build package
121+
# run: swift build
116122

117123
# Looks like tests don't work on Windows
118124
# - name: Run tests
@@ -121,13 +127,13 @@ jobs:
121127
code-coverage:
122128
name: Gather Code Coverage
123129
needs: macos
124-
runs-on: macos-14
130+
runs-on: macos-15
125131
steps:
126132
- name: Checkout repository
127133
uses: actions/checkout@v4
128134

129135
- name: Select latest Xcode
130-
run: sudo xcode-select -s /Applications/Xcode_15.4.app
136+
run: sudo xcode-select -s /Applications/Xcode_16.2.app
131137

132138
- name: Build and test with coverage
133139
run: swift test -Xswiftc -Xfrontend -Xswiftc -dump-macro-expansions --enable-code-coverage
@@ -157,9 +163,12 @@ jobs:
157163
- name: Checkout repository
158164
uses: actions/checkout@v4
159165

166+
- name: Swift versions
167+
run: swift --version
168+
160169
- name: Run Swift Macro Compatibility Check
161170
uses: Matejkob/swift-macro-compatibility-check@v1
162171
with:
163172
run-tests: true
164-
major-versions-only: false
173+
major-versions-only: true
165174

Package.resolved

Lines changed: 0 additions & 14 deletions
This file was deleted.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let package = Package(
1919
)
2020
],
2121
dependencies: [
22-
.package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"601.0.0")
22+
.package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"602.0.0")
2323
],
2424
targets: [
2525
.macro(

Package@swift-6.0.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ let package = Package(
1919
)
2020
],
2121
dependencies: [
22-
.package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"601.0.0")
22+
.package(url: "https://github.com/swiftlang/swift-syntax", "509.0.0"..<"602.0.0")
2323
],
2424
targets: [
2525
.macro(

Sources/SpyableMacro/Extensions/TypeSyntax+Extensions.swift

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,19 +107,46 @@ extension ArrayTypeSyntax: TypeSyntaxSupportingGenerics {
107107

108108
extension GenericArgumentClauseSyntax: TypeSyntaxSupportingGenerics {
109109
fileprivate var nestedTypeSyntaxes: [TypeSyntax] {
110-
arguments.map { $0.argument }
110+
arguments.compactMap {
111+
#if canImport(SwiftSyntax601)
112+
if case let .type(type) = $0.argument {
113+
return type
114+
} else {
115+
return nil
116+
}
117+
#else
118+
return $0.argument
119+
#endif
120+
}
111121
}
122+
112123
fileprivate func erasingGenericTypes(_ genericTypes: Set<String>) -> Self {
113-
with(
114-
\.arguments,
115-
GenericArgumentListSyntax {
116-
for argumentElement in arguments {
117-
argumentElement.with(
118-
\.argument,
119-
argumentElement.argument.erasingGenericTypes(genericTypes)
120-
)
124+
var newArgumentElements: [GenericArgumentSyntax] = []
125+
126+
for argumentElement in arguments {
127+
#if canImport(SwiftSyntax601)
128+
let newArgument: TypeSyntax
129+
switch argumentElement.argument {
130+
case let .type(type):
131+
newArgument = type.erasingGenericTypes(genericTypes)
132+
default: continue
121133
}
122-
}
134+
#else
135+
let newArgument: TypeSyntax = argumentElement.argument.erasingGenericTypes(genericTypes)
136+
#endif
137+
let newArgumentElement = GenericArgumentSyntax(
138+
argument: newArgument,
139+
trailingComma: argumentElement.trailingComma
140+
)
141+
newArgumentElements.append(newArgumentElement)
142+
}
143+
144+
let newArguments = GenericArgumentListSyntax(newArgumentElements)
145+
146+
return Self(
147+
leftAngle: self.leftAngle,
148+
arguments: newArguments,
149+
rightAngle: self.rightAngle
123150
)
124151
}
125152
}
@@ -128,6 +155,7 @@ extension TupleTypeSyntax: TypeSyntaxSupportingGenerics {
128155
fileprivate var nestedTypeSyntaxes: [TypeSyntax] {
129156
elements.map { $0.type }
130157
}
158+
131159
fileprivate func erasingGenericTypes(_ genericTypes: Set<String>) -> Self {
132160
with(
133161
\.elements,

0 commit comments

Comments
 (0)