Skip to content

Commit e0a9b3b

Browse files
kateinoigakukunsliemeobn
authored andcommitted
Generalize lowering parameters with borrowing scope
1 parent 95e259c commit e0a9b3b

File tree

16 files changed

+289
-253
lines changed

16 files changed

+289
-253
lines changed

Benchmarks/Sources/Generated/BridgeJS.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1761,8 +1761,8 @@ fileprivate func bjs_benchmarkRunner_extern(_ nameBytes: Int32, _ nameLength: In
17611761
}
17621762

17631763
func _$benchmarkRunner(_ name: String, _ body: JSObject) throws(JSException) -> Void {
1764-
let bodyValue = body.bridgeJSLowerParameter()
1765-
_swift_js_with_borrowed_utf8(name) { nameBytes, nameLength in
1764+
name.bridgeJSWithLoweredParameter { (nameBytes, nameLength) in
1765+
let bodyValue = body.bridgeJSLowerParameter()
17661766
bjs_benchmarkRunner(nameBytes, nameLength, bodyValue)
17671767
}
17681768
if let error = _swift_js_take_exception() {

Examples/PlayBridgeJS/Sources/PlayBridgeJS/Generated/BridgeJS.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,11 @@ fileprivate func bjs_TS2Swift_convert_extern(_ self: Int32, _ tsBytes: Int32, _
261261

262262
func _$TS2Swift_convert(_ self: JSObject, _ ts: String) throws(JSException) -> String {
263263
let selfValue = self.bridgeJSLowerParameter()
264-
let ret = _swift_js_with_borrowed_utf8(ts) { tsBytes, tsLength in
265-
bjs_TS2Swift_convert(selfValue, tsBytes, tsLength)
264+
let ret0 = ts.bridgeJSWithLoweredParameter { (tsBytes, tsLength) in
265+
let ret = bjs_TS2Swift_convert(selfValue, tsBytes, tsLength)
266+
return ret
266267
}
268+
let ret = ret0
267269
if let error = _swift_js_take_exception() {
268270
throw error
269271
}

Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ public struct ClosureCodegen {
2626
let externName = "invoke_js_callback_\(signature.moduleName)_\(mangledName)"
2727

2828
// Use CallJSEmission to generate the callback invocation
29-
let builder = ImportTS.CallJSEmission(
29+
let builder = try ImportTS.CallJSEmission(
3030
moduleName: "bjs",
3131
abiName: externName,
32+
returnType: signature.returnType,
3233
context: .exportSwift
3334
)
3435

@@ -41,8 +42,8 @@ public struct ClosureCodegen {
4142
}
4243

4344
// Generate the call and return value lifting
44-
try builder.call(returnType: signature.returnType)
45-
try builder.liftReturnValue(returnType: signature.returnType)
45+
try builder.call()
46+
try builder.liftReturnValue()
4647

4748
// Generate extern declaration using CallJSEmission
4849
let externDecl = builder.renderImportDecl()

Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1166,17 +1166,18 @@ struct ProtocolCodegen {
11661166
var externDecls: [DeclSyntax] = []
11671167

11681168
for method in proto.methods {
1169-
let builder = ImportTS.CallJSEmission(
1169+
let builder = try ImportTS.CallJSEmission(
11701170
moduleName: moduleName,
11711171
abiName: "_extern_\(method.name)",
1172+
returnType: method.returnType,
11721173
context: .exportSwift
11731174
)
11741175
try builder.lowerParameter(param: Parameter(label: nil, name: "jsObject", type: .jsObject(nil)))
11751176
for param in method.parameters {
11761177
try builder.lowerParameter(param: param)
11771178
}
1178-
try builder.call(returnType: method.returnType)
1179-
try builder.liftReturnValue(returnType: method.returnType)
1179+
try builder.call()
1180+
try builder.liftReturnValue()
11801181

11811182
// Build function signature using SwiftSignatureBuilder
11821183
let signature = SwiftSignatureBuilder.buildFunctionSignature(
@@ -1264,14 +1265,15 @@ struct ProtocolCodegen {
12641265
className: protocolName
12651266
)
12661267

1267-
let getterBuilder = ImportTS.CallJSEmission(
1268+
let getterBuilder = try ImportTS.CallJSEmission(
12681269
moduleName: moduleName,
12691270
abiName: getterAbiName,
1271+
returnType: property.type,
12701272
context: .exportSwift
12711273
)
12721274
try getterBuilder.lowerParameter(param: Parameter(label: nil, name: "jsObject", type: .jsObject(nil)))
1273-
try getterBuilder.call(returnType: property.type)
1274-
try getterBuilder.liftReturnValue(returnType: property.type)
1275+
try getterBuilder.call()
1276+
try getterBuilder.liftReturnValue()
12751277

12761278
// Build getter extern declaration using helper function
12771279
let getterExternDeclPrinter = CodeFragmentPrinter()
@@ -1296,14 +1298,15 @@ struct ProtocolCodegen {
12961298

12971299
if property.isReadonly { return }
12981300

1299-
let setterBuilder = ImportTS.CallJSEmission(
1301+
let setterBuilder = try ImportTS.CallJSEmission(
13001302
moduleName: moduleName,
13011303
abiName: setterAbiName,
1304+
returnType: .void,
13021305
context: .exportSwift
13031306
)
13041307
try setterBuilder.lowerParameter(param: Parameter(label: nil, name: "jsObject", type: .jsObject(nil)))
13051308
try setterBuilder.lowerParameter(param: Parameter(label: nil, name: "newValue", type: property.type))
1306-
try setterBuilder.call(returnType: .void)
1309+
try setterBuilder.call()
13071310

13081311
// Build setter extern declaration using helper function
13091312
let setterExternDeclPrinter = CodeFragmentPrinter()

0 commit comments

Comments
 (0)