Skip to content

Commit 7e19de2

Browse files
committed
BridgeJS: Remove LiftingIntrinsicInfo wrapper and add console.warn for cleanup failures
1 parent e0c9485 commit 7e19de2

File tree

5 files changed

+21
-26
lines changed

5 files changed

+21
-26
lines changed

Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,16 @@ public struct ClosureCodegen {
123123

124124
for (index, paramType) in signature.parameters.enumerated() {
125125
let paramName = "param\(index)"
126-
let liftInfo = try paramType.liftParameterInfo()
126+
let liftParams = try paramType.liftParameterInfo()
127127

128-
for (argName, wasmType) in liftInfo.parameters {
128+
for (argName, wasmType) in liftParams {
129129
let fullName =
130-
liftInfo.parameters.count > 1 ? "\(paramName)\(argName.capitalizedFirstLetter)" : paramName
130+
liftParams.count > 1 ? "\(paramName)\(argName.capitalizedFirstLetter)" : paramName
131131
abiParams.append((fullName, wasmType))
132132
}
133133

134-
let argNames = liftInfo.parameters.map { (argName, _) in
135-
liftInfo.parameters.count > 1 ? "\(paramName)\(argName.capitalizedFirstLetter)" : paramName
134+
let argNames = liftParams.map { (argName, _) in
135+
liftParams.count > 1 ? "\(paramName)\(argName.capitalizedFirstLetter)" : paramName
136136
}
137137
liftedParams.append("\(paramType.swiftType).bridgeJSLiftParameter(\(argNames.joined(separator: ", ")))")
138138
}

Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,12 @@ public class ExportSwift {
119119

120120
func liftParameter(param: Parameter) throws {
121121
parameters.append(param)
122-
let liftingInfo = try param.type.liftParameterInfo()
122+
let liftingParams = try param.type.liftParameterInfo()
123123
let argumentsToLift: [String]
124-
if liftingInfo.parameters.count == 1 {
124+
if liftingParams.count == 1 {
125125
argumentsToLift = [param.name]
126126
} else {
127-
argumentsToLift = liftingInfo.parameters.map { (name, _) in param.name + name.capitalizedFirstLetter }
127+
argumentsToLift = liftingParams.map { (name, _) in param.name + name.capitalizedFirstLetter }
128128
}
129129

130130
let typeNameForIntrinsic: String
@@ -160,7 +160,7 @@ public class ExportSwift {
160160
}
161161

162162
liftedParameterExprs.append(liftingExpr)
163-
for (name, type) in zip(argumentsToLift, liftingInfo.parameters.map { $0.type }) {
163+
for (name, type) in zip(argumentsToLift, liftingParams.map { $0.type }) {
164164
abiParameterSignatures.append((name, type))
165165
}
166166
}
@@ -1568,25 +1568,20 @@ extension BridgeType {
15681568
return false
15691569
}
15701570

1571-
struct LiftingIntrinsicInfo: Sendable {
1572-
let parameters: [(name: String, type: WasmCoreType)]
1573-
1574-
}
1575-
1576-
func liftParameterInfo() throws -> LiftingIntrinsicInfo {
1571+
func liftParameterInfo() throws -> [(name: String, type: WasmCoreType)] {
15771572
switch self {
15781573
case .nullable(let wrappedType, _):
1579-
let wrappedInfo = try wrappedType.liftParameterInfo()
1580-
if wrappedInfo.parameters.isEmpty {
1581-
return LiftingIntrinsicInfo(parameters: [])
1574+
let wrappedParams = try wrappedType.liftParameterInfo()
1575+
if wrappedParams.isEmpty {
1576+
return []
15821577
}
15831578
var optionalParams: [(name: String, type: WasmCoreType)] = [("isSome", .i32)]
1584-
optionalParams.append(contentsOf: wrappedInfo.parameters)
1585-
return LiftingIntrinsicInfo(parameters: optionalParams)
1579+
optionalParams.append(contentsOf: wrappedParams)
1580+
return optionalParams
15861581
case .namespaceEnum:
15871582
throw BridgeJSCoreError("Namespace enums are not supported to pass as parameters")
15881583
default:
1589-
return LiftingIntrinsicInfo(parameters: descriptor.wasmParams)
1584+
return descriptor.wasmParams
15901585
}
15911586
}
15921587

Plugins/BridgeJS/Sources/BridgeJSLink/JSGlueGen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2819,7 +2819,7 @@ struct IntrinsicJSFragment: Sendable {
28192819
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.getObject(\(idVar));")
28202820
cleanup.write("\(JSGlueVariableScope.reservedSwift).memory.release(\(idVar));")
28212821
}
2822-
cleanup.write("} catch(e) {}")
2822+
cleanup.write("} catch(e) { console.warn('BridgeJS: cleanup failed for retained object', e); }")
28232823
}
28242824
cleanup.write("}")
28252825
return [idVar]

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/ImportedTypeInExportedInterface.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export async function createInstantiator(options, swift) {
5454
try {
5555
swift.memory.getObject(id1);
5656
swift.memory.release(id1);
57-
} catch(e) {}
57+
} catch(e) { console.warn('BridgeJS: cleanup failed for retained object', e); }
5858
}
5959
};
6060
} else {
@@ -66,7 +66,7 @@ export async function createInstantiator(options, swift) {
6666
try {
6767
swift.memory.getObject(id);
6868
swift.memory.release(id);
69-
} catch(e) {}
69+
} catch(e) { console.warn('BridgeJS: cleanup failed for retained object', e); }
7070
}
7171
if (innerCleanup) { innerCleanup(); }
7272
};

Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/SwiftStruct.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ export async function createInstantiator(options, swift) {
251251
try {
252252
swift.memory.getObject(id1);
253253
swift.memory.release(id1);
254-
} catch(e) {}
254+
} catch(e) { console.warn('BridgeJS: cleanup failed for retained object', e); }
255255
}
256256
};
257257
} else {
@@ -263,7 +263,7 @@ export async function createInstantiator(options, swift) {
263263
try {
264264
swift.memory.getObject(id);
265265
swift.memory.release(id);
266-
} catch(e) {}
266+
} catch(e) { console.warn('BridgeJS: cleanup failed for retained object', e); }
267267
}
268268
if (innerCleanup) { innerCleanup(); }
269269
};

0 commit comments

Comments
 (0)