Skip to content

Commit f6bd3ef

Browse files
BridgeJS: Relax SwiftSyntax version constraint to support 602 and 603
1 parent 549ee5d commit f6bd3ef

File tree

3 files changed

+36
-9
lines changed

3 files changed

+36
-9
lines changed

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ let package = Package(
3737
.plugin(name: "BridgeJSCommandPlugin", targets: ["BridgeJSCommandPlugin"]),
3838
],
3939
dependencies: [
40-
.package(url: "https://github.com/swiftlang/swift-syntax", "600.0.0"..<"601.0.0")
40+
.package(url: "https://github.com/swiftlang/swift-syntax", "600.0.0"..<"603.0.0")
4141
],
4242
targets: [
4343
.target(

Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2528,9 +2528,20 @@ struct ClosureCodegen {
25282528
capture: ClosureCaptureClauseSyntax(
25292529
leftSquare: .leftSquareToken(),
25302530
items: ClosureCaptureListSyntax {
2531+
#if canImport(SwiftSyntax602)
2532+
ClosureCaptureSyntax(
2533+
name: .identifier("", presence: .missing), initializer: InitializerClauseSyntax(
2534+
equal: .equalToken(presence: .missing),
2535+
nil,
2536+
value: ExprSyntax("callback")
2537+
),
2538+
trailingTrivia: nil
2539+
)
2540+
#else
25312541
ClosureCaptureSyntax(
25322542
expression: ExprSyntax("callback")
25332543
)
2544+
#endif
25342545
},
25352546
rightSquare: .rightSquareToken()
25362547
),

Plugins/BridgeJS/Sources/BridgeJSCore/ImportTS.swift

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -734,24 +734,40 @@ enum SwiftCodePattern {
734734
/// Builds the standard @_expose and @_cdecl attributes for WebAssembly-exposed functions
735735
static func buildExposeAttributes(abiName: String) -> AttributeListSyntax {
736736
return AttributeListSyntax {
737+
#if canImport(SwiftSyntax602)
738+
let exposeAttrArgs = AttributeSyntax.Arguments.argumentList(
739+
[
740+
LabeledExprSyntax(label: nil, expression: DeclReferenceExprSyntax(baseName: "wasm")),
741+
LabeledExprSyntax(label: nil, expression: StringLiteralExprSyntax(content: abiName)),
742+
]
743+
)
744+
let cdeclAttrArgs = AttributeSyntax.Arguments.argumentList(
745+
[
746+
LabeledExprSyntax(label: nil, expression: StringLiteralExprSyntax(content: abiName)),
747+
]
748+
)
749+
#else
750+
let exposeAttrArgs = AttributeSyntax.Arguments.exposeAttributeArguments(
751+
ExposeAttributeArgumentsSyntax(
752+
language: .identifier("wasm"),
753+
comma: .commaToken(),
754+
cxxName: StringLiteralExprSyntax(content: abiName)
755+
)
756+
)
757+
let cdeclAttrArgs = AttributeSyntax.Arguments.string(StringLiteralExprSyntax(content: abiName))
758+
#endif
737759
AttributeSyntax(
738760
attributeName: IdentifierTypeSyntax(name: .identifier("_expose")),
739761
leftParen: .leftParenToken(),
740-
arguments: .exposeAttributeArguments(
741-
ExposeAttributeArgumentsSyntax(
742-
language: .identifier("wasm"),
743-
comma: .commaToken(),
744-
cxxName: StringLiteralExprSyntax(content: abiName)
745-
)
746-
),
762+
arguments: exposeAttrArgs,
747763
rightParen: .rightParenToken()
748764
)
749765
.with(\.trailingTrivia, .newline)
750766

751767
AttributeSyntax(
752768
attributeName: IdentifierTypeSyntax(name: .identifier("_cdecl")),
753769
leftParen: .leftParenToken(),
754-
arguments: .string(StringLiteralExprSyntax(content: abiName)),
770+
arguments: cdeclAttrArgs,
755771
rightParen: .rightParenToken()
756772
)
757773
.with(\.trailingTrivia, .newline)

0 commit comments

Comments
 (0)