diff --git a/Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift b/Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift index 5d654566..e7a88285 100644 --- a/Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift +++ b/Plugins/BridgeJS/Sources/BridgeJSCore/ClosureCodegen.swift @@ -61,6 +61,11 @@ public struct ClosureCodegen { // Generate the call and return value lifting try builder.call(returnType: signature.returnType) + + if signature.isThrows { + builder.body.append("if let error = _swift_js_take_exception() { throw error }") + } + try builder.liftReturnValue(returnType: signature.returnType) // Get the body code diff --git a/Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift b/Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift index 85aeee13..c6e962b6 100644 --- a/Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift +++ b/Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift @@ -1447,7 +1447,7 @@ struct ProtocolCodegen { let getterBuilder = ImportTS.CallJSEmission( moduleName: moduleName, abiName: getterAbiName, - context: .exportSwift + context: property.effects.isThrows ? .exportSwiftProtocol : .exportSwift ) try getterBuilder.lowerParameter(param: Parameter(label: nil, name: "jsObject", type: .jsObject(nil))) try getterBuilder.call(returnType: property.type) @@ -1466,6 +1466,12 @@ struct ProtocolCodegen { ) if property.isReadonly { + // Build effect specifiers for getter if property throws + let getterEffects = + property.effects.isThrows || property.effects.isAsync + ? ImportTS.buildAccessorEffect(throws: property.effects.isThrows, async: property.effects.isAsync) + : nil + let propertyDecl = VariableDeclSyntax( bindingSpecifier: .keyword(.var), bindings: PatternBindingListSyntax { @@ -1479,6 +1485,7 @@ struct ProtocolCodegen { AccessorDeclListSyntax { AccessorDeclSyntax( accessorSpecifier: .keyword(.get), + effectSpecifiers: getterEffects, body: getterBuilder.getBody() ) } diff --git a/Plugins/BridgeJS/Sources/BridgeJSCore/SwiftToSkeleton.swift b/Plugins/BridgeJS/Sources/BridgeJSCore/SwiftToSkeleton.swift index edcb0a39..670dd4ae 100644 --- a/Plugins/BridgeJS/Sources/BridgeJSCore/SwiftToSkeleton.swift +++ b/Plugins/BridgeJS/Sources/BridgeJSCore/SwiftToSkeleton.swift @@ -1057,6 +1057,29 @@ private final class ExportSwiftAPICollector: SyntaxAnyVisitor { return Effects(isAsync: isAsync, isThrows: isThrows, isStatic: isStatic) } + private func collectEffectsFromAccessor(_ accessor: AccessorDeclSyntax) -> Effects? { + let isAsync = accessor.effectSpecifiers?.asyncSpecifier != nil + var isThrows = false + if let throwsClause = accessor.effectSpecifiers?.throwsClause { + guard let thrownType = throwsClause.type else { + diagnose( + node: throwsClause, + message: "Thrown type is not specified, only JSException is supported for now" + ) + return nil + } + guard thrownType.trimmedDescription == "JSException" else { + diagnose( + node: throwsClause, + message: "Only JSException is supported for thrown type, got \(thrownType.trimmedDescription)" + ) + return nil + } + isThrows = true + } + return Effects(isAsync: isAsync, isThrows: isThrows, isStatic: false) + } + private func extractNamespace( from jsAttribute: AttributeSyntax ) -> [String]? { @@ -1654,18 +1677,62 @@ private final class ExportSwiftAPICollector: SyntaxAnyVisitor { guard let accessorBlock = binding.accessorBlock else { diagnose( node: binding, - message: "Protocol property must specify { get } or { get set }", - hint: "Add { get } for readonly or { get set } for readwrite property" + message: "Protocol property must specify { get throws(JSException) }", + hint: "Add { get throws(JSException) } for the property accessor" ) continue } - let isReadonly = hasOnlyGetter(accessorBlock) + // Find the getter accessor + let getterAccessor: AccessorDeclSyntax? + switch accessorBlock.accessors { + case .accessors(let accessors): + getterAccessor = accessors.first { $0.accessorSpecifier.tokenKind == .keyword(.get) } + case .getter: + diagnose( + node: accessorBlock, + message: "@JS protocol property getter must declare throws(JSException)", + hint: "Use { get throws(JSException) } syntax" + ) + continue + } + + guard let getter = getterAccessor else { + diagnose(node: accessorBlock, message: "Protocol property must have a getter") + continue + } + + // Check for setter - not allowed with throwing getter + if case .accessors(let accessors) = accessorBlock.accessors { + if accessors.contains(where: { $0.accessorSpecifier.tokenKind == .keyword(.set) }) { + diagnose( + node: accessorBlock, + message: "@JS protocol cannot have { get set } properties", + hint: + "Use readonly property with setter method: var \(propertyName): \(typeAnnotation.type.trimmedDescription) { get throws(JSException) } and func set\(propertyName.capitalized)(_ value: \(typeAnnotation.type.trimmedDescription)) throws(JSException)" + ) + continue + } + } + + guard let effects = collectEffectsFromAccessor(getter) else { + continue + } + + guard effects.isThrows else { + diagnose( + node: getter, + message: "@JS protocol property getter must be throws", + hint: "Declare the getter as 'get throws(JSException)'" + ) + continue + } let exportedProperty = ExportedProtocolProperty( name: propertyName, type: propertyType, - isReadonly: isReadonly + isReadonly: true, // Always readonly since { get set } with throws is not allowed + effects: effects ) if var currentProtocol = exportedProtocolByName[protocolKey] { diff --git a/Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift b/Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift index 60b55cd4..bfd95738 100644 --- a/Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift +++ b/Plugins/BridgeJS/Sources/BridgeJSLink/BridgeJSLink.swift @@ -3281,7 +3281,20 @@ extension BridgeJSLink { for param in method.parameters { try thunkBuilder.liftParameter(param: param) } - let returnExpr = try thunkBuilder.callMethod(name: method.name, returnType: method.returnType) + + // Check if this is a setter method (setFoo pattern with single parameter and void return) + // If so, convert to property assignment for JavaScript compatibility + let returnExpr: String? + if let propertyName = extractSetterPropertyName(from: method.name), + method.parameters.count == 1, + method.returnType == .void + { + thunkBuilder.callPropertySetter(name: propertyName, returnType: method.returnType) + returnExpr = nil + } else { + returnExpr = try thunkBuilder.callMethod(name: method.name, returnType: method.returnType) + } + let funcLines = thunkBuilder.renderFunction( name: method.abiName, returnExpr: returnExpr, @@ -3289,6 +3302,19 @@ extension BridgeJSLink { ) importObjectBuilder.assignToImportObject(name: method.abiName, function: funcLines) } + + /// Extracts property name from a setter method name (e.g., "setFoo" -> "foo") + /// Returns nil if the method name doesn't match the setter pattern + private func extractSetterPropertyName(from methodName: String) -> String? { + guard methodName.hasPrefix("set"), methodName.count > 3 else { + return nil + } + let propertyName = String(methodName.dropFirst(3)) + guard !propertyName.isEmpty else { + return nil + } + return propertyName.prefix(1).lowercased() + propertyName.dropFirst() + } } /// Utility enum for generating default value representations in JavaScript/TypeScript diff --git a/Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift b/Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift index 01382e64..cb5c3357 100644 --- a/Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift +++ b/Plugins/BridgeJS/Sources/BridgeJSSkeleton/BridgeJSSkeleton.swift @@ -406,15 +406,18 @@ public struct ExportedProtocolProperty: Codable, Equatable, Sendable { public let name: String public let type: BridgeType public let isReadonly: Bool + public let effects: Effects public init( name: String, type: BridgeType, - isReadonly: Bool + isReadonly: Bool, + effects: Effects ) { self.name = name self.type = type self.isReadonly = isReadonly + self.effects = effects } } diff --git a/Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MacroSwift/Protocol.swift b/Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MacroSwift/Protocol.swift index 3e8df740..9862e39b 100644 --- a/Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MacroSwift/Protocol.swift +++ b/Plugins/BridgeJS/Tests/BridgeJSToolTests/Inputs/MacroSwift/Protocol.swift @@ -36,17 +36,27 @@ import JavaScriptKit } @JS protocol MyViewControllerDelegate { - var eventCount: Int { get set } - var delegateName: String { get } - var optionalName: String? { get set } - var optionalRawEnum: ExampleEnum? { get set } - var rawStringEnum: ExampleEnum { get set } - var result: Result { get set } - var optionalResult: Result? { get set } - var direction: Direction { get set } - var directionOptional: Direction? { get set } - var priority: Priority { get set } - var priorityOptional: Priority? { get set } + var eventCount: Int { get throws(JSException) } + var delegateName: String { get throws(JSException) } + var optionalName: String? { get throws(JSException) } + var optionalRawEnum: ExampleEnum? { get throws(JSException) } + var rawStringEnum: ExampleEnum { get throws(JSException) } + var result: Result { get throws(JSException) } + var optionalResult: Result? { get throws(JSException) } + var direction: Direction { get throws(JSException) } + var directionOptional: Direction? { get throws(JSException) } + var priority: Priority { get throws(JSException) } + var priorityOptional: Priority? { get throws(JSException) } + func setEventCount(_ value: Int) throws(JSException) + func setOptionalName(_ value: String?) throws(JSException) + func setOptionalRawEnum(_ value: ExampleEnum?) throws(JSException) + func setRawStringEnum(_ value: ExampleEnum) throws(JSException) + func setResult(_ value: Result) throws(JSException) + func setOptionalResult(_ value: Result?) throws(JSException) + func setDirection(_ value: Direction) throws(JSException) + func setDirectionOptional(_ value: Direction?) throws(JSException) + func setPriority(_ value: Priority) throws(JSException) + func setPriorityOptional(_ value: Priority?) throws(JSException) func onSomethingHappened() throws(JSException) func onValueChanged(_ value: String) throws(JSException) func onCountUpdated(count: Int) throws(JSException) -> Bool diff --git a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.json b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.json index 2f9c27ac..43fcff92 100644 --- a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.json +++ b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.json @@ -494,6 +494,280 @@ "protocols" : [ { "methods" : [ + { + "abiName" : "bjs_MyViewControllerDelegate_setEventCount", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setEventCount", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "int" : { + + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setOptionalName", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalName", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "string" : { + + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setOptionalRawEnum", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalRawEnum", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "ExampleEnum", + "_1" : "String" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setRawStringEnum", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setRawStringEnum", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "rawValueEnum" : { + "_0" : "ExampleEnum", + "_1" : "String" + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setResult", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setResult", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "associatedValueEnum" : { + "_0" : "Result" + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setOptionalResult", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalResult", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "associatedValueEnum" : { + "_0" : "Result" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setDirection", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setDirection", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "caseEnum" : { + "_0" : "Direction" + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setDirectionOptional", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setDirectionOptional", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "caseEnum" : { + "_0" : "Direction" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setPriority", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setPriority", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "rawValueEnum" : { + "_0" : "Priority", + "_1" : "Int" + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_MyViewControllerDelegate_setPriorityOptional", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setPriorityOptional", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "Priority", + "_1" : "Int" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, { "abiName" : "bjs_MyViewControllerDelegate_onSomethingHappened", "effects" : { @@ -768,7 +1042,12 @@ "name" : "MyViewControllerDelegate", "properties" : [ { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "eventCount", "type" : { "int" : { @@ -777,6 +1056,11 @@ } }, { + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, "isReadonly" : true, "name" : "delegateName", "type" : { @@ -786,7 +1070,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalName", "type" : { "optional" : { @@ -799,7 +1088,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalRawEnum", "type" : { "optional" : { @@ -813,7 +1107,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "rawStringEnum", "type" : { "rawValueEnum" : { @@ -823,7 +1122,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "result", "type" : { "associatedValueEnum" : { @@ -832,7 +1136,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalResult", "type" : { "optional" : { @@ -845,7 +1154,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "direction", "type" : { "caseEnum" : { @@ -854,7 +1168,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "directionOptional", "type" : { "optional" : { @@ -867,7 +1186,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "priority", "type" : { "rawValueEnum" : { @@ -877,7 +1201,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "priorityOptional", "type" : { "optional" : { diff --git a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.swift b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.swift index 91efeda7..11619bd4 100644 --- a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.swift +++ b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSCodegenTests/Protocol.swift @@ -1,6 +1,96 @@ struct AnyMyViewControllerDelegate: MyViewControllerDelegate, _BridgedSwiftProtocolWrapper { let jsObject: JSObject + func setEventCount(_ value: Int) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueValue = value.bridgeJSLowerParameter() + _extern_setEventCount(jsObjectValue, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalName(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setOptionalName(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalRawEnum(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setOptionalRawEnum(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setRawStringEnum(_ value: ExampleEnum) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueValue = value.bridgeJSLowerParameter() + _extern_setRawStringEnum(jsObjectValue, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setResult(_ value: Result) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueCaseId = value.bridgeJSLowerParameter() + _extern_setResult(jsObjectValue, valueCaseId) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalResult(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueCaseId) = value.bridgeJSLowerParameter() + _extern_setOptionalResult(jsObjectValue, valueIsSome, valueCaseId) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setDirection(_ value: Direction) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueValue = value.bridgeJSLowerParameter() + _extern_setDirection(jsObjectValue, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setDirectionOptional(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setDirectionOptional(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setPriority(_ value: Priority) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueValue = value.bridgeJSLowerParameter() + _extern_setPriority(jsObjectValue, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setPriorityOptional(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setPriorityOptional(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + func onSomethingHappened() throws(JSException) -> Void { let jsObjectValue = jsObject.bridgeJSLowerParameter() _extern_onSomethingHappened(jsObjectValue) @@ -111,141 +201,124 @@ struct AnyMyViewControllerDelegate: MyViewControllerDelegate, _BridgedSwiftProto } var eventCount: Int { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_eventCount_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Int.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueValue = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_eventCount_set(jsObjectValue, newValueValue) - } } var delegateName: String { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_delegateName_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return String.bridgeJSLiftReturn(ret) } } var optionalName: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_MyViewControllerDelegate_optionalName_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_optionalName_set(jsObjectValue, newValueIsSome, newValueValue) - } } var optionalRawEnum: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_MyViewControllerDelegate_optionalRawEnum_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_optionalRawEnum_set(jsObjectValue, newValueIsSome, newValueValue) - } } var rawStringEnum: ExampleEnum { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_rawStringEnum_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return ExampleEnum.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueValue = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_rawStringEnum_set(jsObjectValue, newValueValue) - } } var result: Result { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_result_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Result.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueCaseId = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_result_set(jsObjectValue, newValueCaseId) - } } var optionalResult: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_optionalResult_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueCaseId) = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_optionalResult_set(jsObjectValue, newValueIsSome, newValueCaseId) - } } var direction: Direction { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_direction_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Direction.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueValue = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_direction_set(jsObjectValue, newValueValue) - } } var directionOptional: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_directionOptional_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_directionOptional_set(jsObjectValue, newValueIsSome, newValueValue) - } } var priority: Priority { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_MyViewControllerDelegate_priority_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Priority.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueValue = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_priority_set(jsObjectValue, newValueValue) - } } var priorityOptional: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_MyViewControllerDelegate_priorityOptional_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_MyViewControllerDelegate_priorityOptional_set(jsObjectValue, newValueIsSome, newValueValue) - } } static func bridgeJSLiftParameter(_ value: Int32) -> Self { @@ -253,6 +326,36 @@ struct AnyMyViewControllerDelegate: MyViewControllerDelegate, _BridgedSwiftProto } } +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setEventCount") +fileprivate func _extern_setEventCount(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setOptionalName") +fileprivate func _extern_setOptionalName(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setOptionalRawEnum") +fileprivate func _extern_setOptionalRawEnum(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setRawStringEnum") +fileprivate func _extern_setRawStringEnum(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setResult") +fileprivate func _extern_setResult(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setOptionalResult") +fileprivate func _extern_setOptionalResult(_ jsObject: Int32, _ valueIsSome: Int32, _ valueCaseId: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setDirection") +fileprivate func _extern_setDirection(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setDirectionOptional") +fileprivate func _extern_setDirectionOptional(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setPriority") +fileprivate func _extern_setPriority(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_setPriorityOptional") +fileprivate func _extern_setPriorityOptional(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_onSomethingHappened") fileprivate func _extern_onSomethingHappened(_ jsObject: Int32) -> Void @@ -292,66 +395,36 @@ fileprivate func _extern_getResult(_ jsObject: Int32) -> Int32 @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_eventCount_get") fileprivate func bjs_MyViewControllerDelegate_eventCount_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_eventCount_set") -fileprivate func bjs_MyViewControllerDelegate_eventCount_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_delegateName_get") fileprivate func bjs_MyViewControllerDelegate_delegateName_get(_ jsObject: Int32) -> Int32 @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalName_get") fileprivate func bjs_MyViewControllerDelegate_optionalName_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalName_set") -fileprivate func bjs_MyViewControllerDelegate_optionalName_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalRawEnum_get") fileprivate func bjs_MyViewControllerDelegate_optionalRawEnum_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalRawEnum_set") -fileprivate func bjs_MyViewControllerDelegate_optionalRawEnum_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_rawStringEnum_get") fileprivate func bjs_MyViewControllerDelegate_rawStringEnum_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_rawStringEnum_set") -fileprivate func bjs_MyViewControllerDelegate_rawStringEnum_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_result_get") fileprivate func bjs_MyViewControllerDelegate_result_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_result_set") -fileprivate func bjs_MyViewControllerDelegate_result_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalResult_get") fileprivate func bjs_MyViewControllerDelegate_optionalResult_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_optionalResult_set") -fileprivate func bjs_MyViewControllerDelegate_optionalResult_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueCaseId: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_direction_get") fileprivate func bjs_MyViewControllerDelegate_direction_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_direction_set") -fileprivate func bjs_MyViewControllerDelegate_direction_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_directionOptional_get") fileprivate func bjs_MyViewControllerDelegate_directionOptional_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_directionOptional_set") -fileprivate func bjs_MyViewControllerDelegate_directionOptional_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_priority_get") fileprivate func bjs_MyViewControllerDelegate_priority_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_priority_set") -fileprivate func bjs_MyViewControllerDelegate_priority_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_priorityOptional_get") fileprivate func bjs_MyViewControllerDelegate_priorityOptional_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "TestModule", name: "bjs_MyViewControllerDelegate_priorityOptional_set") -fileprivate func bjs_MyViewControllerDelegate_priorityOptional_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - extension Direction: _BridgedSwiftCaseEnum { @_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 { return bridgeJSRawValue diff --git a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.d.ts b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.d.ts index 4c09ad85..80c30992 100644 --- a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.d.ts +++ b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.d.ts @@ -5,6 +5,16 @@ // `swift package bridge-js`. export interface MyViewControllerDelegate { + setEventCount(value: number): void; + setOptionalName(value: string | null): void; + setOptionalRawEnum(value: ExampleEnumTag | null): void; + setRawStringEnum(value: ExampleEnumTag): void; + setResult(value: ResultTag): void; + setOptionalResult(value: ResultTag | null): void; + setDirection(value: DirectionTag): void; + setDirectionOptional(value: DirectionTag | null): void; + setPriority(value: PriorityTag): void; + setPriorityOptional(value: PriorityTag | null): void; onSomethingHappened(): void; onValueChanged(value: string): void; onCountUpdated(count: number): boolean; @@ -17,17 +27,17 @@ export interface MyViewControllerDelegate { createEnum(): ExampleEnumTag; handleResult(result: ResultTag): void; getResult(): ResultTag; - eventCount: number; + readonly eventCount: number; readonly delegateName: string; - optionalName: string | null; - optionalRawEnum: ExampleEnumTag | null; - rawStringEnum: ExampleEnumTag; - result: ResultTag; - optionalResult: ResultTag | null; - direction: DirectionTag; - directionOptional: DirectionTag | null; - priority: PriorityTag; - priorityOptional: PriorityTag | null; + readonly optionalName: string | null; + readonly optionalRawEnum: ExampleEnumTag | null; + readonly rawStringEnum: ExampleEnumTag; + readonly result: ResultTag; + readonly optionalResult: ResultTag | null; + readonly direction: DirectionTag; + readonly directionOptional: DirectionTag | null; + readonly priority: PriorityTag; + readonly priorityOptional: PriorityTag | null; } export const DirectionValues: { diff --git a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.js b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.js index 24c02750..8989be71 100644 --- a/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.js +++ b/Plugins/BridgeJS/Tests/BridgeJSToolTests/__Snapshots__/BridgeJSLinkTests/Protocol.js @@ -291,13 +291,6 @@ export async function createInstantiator(options, swift) { return 0 } } - TestModule["bjs_MyViewControllerDelegate_eventCount_set"] = function bjs_MyViewControllerDelegate_eventCount_set(self, value) { - try { - swift.memory.getObject(self).eventCount = value; - } catch (error) { - setException(error); - } - } TestModule["bjs_MyViewControllerDelegate_delegateName_get"] = function bjs_MyViewControllerDelegate_delegateName_get(self) { try { let ret = swift.memory.getObject(self).delegateName; @@ -315,155 +308,162 @@ export async function createInstantiator(options, swift) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_optionalName_set"] = function bjs_MyViewControllerDelegate_optionalName_set(self, valueIsSome, valueWrappedValue) { + TestModule["bjs_MyViewControllerDelegate_optionalRawEnum_get"] = function bjs_MyViewControllerDelegate_optionalRawEnum_get(self) { try { - let obj; - if (valueIsSome) { - obj = swift.memory.getObject(valueWrappedValue); - swift.memory.release(valueWrappedValue); - } - swift.memory.getObject(self).optionalName = valueIsSome ? obj : null; + let ret = swift.memory.getObject(self).optionalRawEnum; + tmpRetString = ret; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_optionalRawEnum_get"] = function bjs_MyViewControllerDelegate_optionalRawEnum_get(self) { + TestModule["bjs_MyViewControllerDelegate_rawStringEnum_get"] = function bjs_MyViewControllerDelegate_rawStringEnum_get(self) { try { - let ret = swift.memory.getObject(self).optionalRawEnum; - tmpRetString = ret; + let ret = swift.memory.getObject(self).rawStringEnum; + tmpRetBytes = textEncoder.encode(ret); + return tmpRetBytes.length; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_optionalRawEnum_set"] = function bjs_MyViewControllerDelegate_optionalRawEnum_set(self, valueIsSome, valueWrappedValue) { + TestModule["bjs_MyViewControllerDelegate_result_get"] = function bjs_MyViewControllerDelegate_result_get(self) { try { - let obj; - if (valueIsSome) { - obj = swift.memory.getObject(valueWrappedValue); - swift.memory.release(valueWrappedValue); + let ret = swift.memory.getObject(self).result; + const { caseId: caseId, cleanup: cleanup } = enumHelpers.Result.lower(ret); + return caseId; + } catch (error) { + setException(error); + } + } + TestModule["bjs_MyViewControllerDelegate_optionalResult_get"] = function bjs_MyViewControllerDelegate_optionalResult_get(self) { + try { + let ret = swift.memory.getObject(self).optionalResult; + const isSome = ret != null; + if (isSome) { + const { caseId: caseId, cleanup: cleanup } = enumHelpers.Result.lower(ret); + return caseId; + } else { + return -1; } - swift.memory.getObject(self).optionalRawEnum = valueIsSome ? obj : null; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_rawStringEnum_get"] = function bjs_MyViewControllerDelegate_rawStringEnum_get(self) { + TestModule["bjs_MyViewControllerDelegate_direction_get"] = function bjs_MyViewControllerDelegate_direction_get(self) { try { - let ret = swift.memory.getObject(self).rawStringEnum; - tmpRetBytes = textEncoder.encode(ret); - return tmpRetBytes.length; + let ret = swift.memory.getObject(self).direction; + return ret; } catch (error) { setException(error); + return 0 } } - TestModule["bjs_MyViewControllerDelegate_rawStringEnum_set"] = function bjs_MyViewControllerDelegate_rawStringEnum_set(self, value) { + TestModule["bjs_MyViewControllerDelegate_directionOptional_get"] = function bjs_MyViewControllerDelegate_directionOptional_get(self) { try { - const valueObject = swift.memory.getObject(value); - swift.memory.release(value); - swift.memory.getObject(self).rawStringEnum = valueObject; + let ret = swift.memory.getObject(self).directionOptional; + const isSome = ret != null; + return isSome ? (ret | 0) : -1; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_result_get"] = function bjs_MyViewControllerDelegate_result_get(self) { + TestModule["bjs_MyViewControllerDelegate_priority_get"] = function bjs_MyViewControllerDelegate_priority_get(self) { try { - let ret = swift.memory.getObject(self).result; - const { caseId: caseId, cleanup: cleanup } = enumHelpers.Result.lower(ret); - return caseId; + let ret = swift.memory.getObject(self).priority; + return ret; } catch (error) { setException(error); + return 0 } } - TestModule["bjs_MyViewControllerDelegate_result_set"] = function bjs_MyViewControllerDelegate_result_set(self, value) { + TestModule["bjs_MyViewControllerDelegate_priorityOptional_get"] = function bjs_MyViewControllerDelegate_priorityOptional_get(self) { try { - const enumValue = enumHelpers.Result.lift(value, tmpRetStrings, tmpRetInts, tmpRetF32s, tmpRetF64s); - swift.memory.getObject(self).result = enumValue; + let ret = swift.memory.getObject(self).priorityOptional; + tmpRetOptionalInt = ret; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_optionalResult_get"] = function bjs_MyViewControllerDelegate_optionalResult_get(self) { + TestModule["bjs_MyViewControllerDelegate_setEventCount"] = function bjs_MyViewControllerDelegate_setEventCount(self, value) { try { - let ret = swift.memory.getObject(self).optionalResult; - const isSome = ret != null; - if (isSome) { - const { caseId: caseId, cleanup: cleanup } = enumHelpers.Result.lower(ret); - return caseId; - } else { - return -1; - } + swift.memory.getObject(self).eventCount = value; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_optionalResult_set"] = function bjs_MyViewControllerDelegate_optionalResult_set(self, valueIsSome, valueWrappedValue) { + TestModule["bjs_MyViewControllerDelegate_setOptionalName"] = function bjs_MyViewControllerDelegate_setOptionalName(self, valueIsSome, valueWrappedValue) { try { - let enumValue; + let obj; if (valueIsSome) { - enumValue = enumHelpers.Result.lift(valueWrappedValue, tmpRetStrings, tmpRetInts, tmpRetF32s, tmpRetF64s); + obj = swift.memory.getObject(valueWrappedValue); + swift.memory.release(valueWrappedValue); } - swift.memory.getObject(self).optionalResult = valueIsSome ? enumValue : null; + swift.memory.getObject(self).optionalName = valueIsSome ? obj : null; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_direction_get"] = function bjs_MyViewControllerDelegate_direction_get(self) { + TestModule["bjs_MyViewControllerDelegate_setOptionalRawEnum"] = function bjs_MyViewControllerDelegate_setOptionalRawEnum(self, valueIsSome, valueWrappedValue) { try { - let ret = swift.memory.getObject(self).direction; - return ret; + let obj; + if (valueIsSome) { + obj = swift.memory.getObject(valueWrappedValue); + swift.memory.release(valueWrappedValue); + } + swift.memory.getObject(self).optionalRawEnum = valueIsSome ? obj : null; } catch (error) { setException(error); - return 0 } } - TestModule["bjs_MyViewControllerDelegate_direction_set"] = function bjs_MyViewControllerDelegate_direction_set(self, value) { + TestModule["bjs_MyViewControllerDelegate_setRawStringEnum"] = function bjs_MyViewControllerDelegate_setRawStringEnum(self, value) { try { - swift.memory.getObject(self).direction = value; + const valueObject = swift.memory.getObject(value); + swift.memory.release(value); + swift.memory.getObject(self).rawStringEnum = valueObject; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_directionOptional_get"] = function bjs_MyViewControllerDelegate_directionOptional_get(self) { + TestModule["bjs_MyViewControllerDelegate_setResult"] = function bjs_MyViewControllerDelegate_setResult(self, value) { try { - let ret = swift.memory.getObject(self).directionOptional; - const isSome = ret != null; - return isSome ? (ret | 0) : -1; + const enumValue = enumHelpers.Result.lift(value, tmpRetStrings, tmpRetInts, tmpRetF32s, tmpRetF64s); + swift.memory.getObject(self).result = enumValue; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_directionOptional_set"] = function bjs_MyViewControllerDelegate_directionOptional_set(self, valueIsSome, valueWrappedValue) { + TestModule["bjs_MyViewControllerDelegate_setOptionalResult"] = function bjs_MyViewControllerDelegate_setOptionalResult(self, valueIsSome, valueWrappedValue) { try { - swift.memory.getObject(self).directionOptional = valueIsSome ? valueWrappedValue : null; + let enumValue; + if (valueIsSome) { + enumValue = enumHelpers.Result.lift(valueWrappedValue, tmpRetStrings, tmpRetInts, tmpRetF32s, tmpRetF64s); + } + swift.memory.getObject(self).optionalResult = valueIsSome ? enumValue : null; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_priority_get"] = function bjs_MyViewControllerDelegate_priority_get(self) { + TestModule["bjs_MyViewControllerDelegate_setDirection"] = function bjs_MyViewControllerDelegate_setDirection(self, value) { try { - let ret = swift.memory.getObject(self).priority; - return ret; + swift.memory.getObject(self).direction = value; } catch (error) { setException(error); - return 0 } } - TestModule["bjs_MyViewControllerDelegate_priority_set"] = function bjs_MyViewControllerDelegate_priority_set(self, value) { + TestModule["bjs_MyViewControllerDelegate_setDirectionOptional"] = function bjs_MyViewControllerDelegate_setDirectionOptional(self, valueIsSome, valueWrappedValue) { try { - swift.memory.getObject(self).priority = value; + swift.memory.getObject(self).directionOptional = valueIsSome ? valueWrappedValue : null; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_priorityOptional_get"] = function bjs_MyViewControllerDelegate_priorityOptional_get(self) { + TestModule["bjs_MyViewControllerDelegate_setPriority"] = function bjs_MyViewControllerDelegate_setPriority(self, value) { try { - let ret = swift.memory.getObject(self).priorityOptional; - tmpRetOptionalInt = ret; + swift.memory.getObject(self).priority = value; } catch (error) { setException(error); } } - TestModule["bjs_MyViewControllerDelegate_priorityOptional_set"] = function bjs_MyViewControllerDelegate_priorityOptional_set(self, valueIsSome, valueWrappedValue) { + TestModule["bjs_MyViewControllerDelegate_setPriorityOptional"] = function bjs_MyViewControllerDelegate_setPriorityOptional(self, valueIsSome, valueWrappedValue) { try { swift.memory.getObject(self).priorityOptional = valueIsSome ? valueWrappedValue : null; } catch (error) { diff --git a/Tests/BridgeJSRuntimeTests/ExportAPITests.swift b/Tests/BridgeJSRuntimeTests/ExportAPITests.swift index 520fe829..65691de3 100644 --- a/Tests/BridgeJSRuntimeTests/ExportAPITests.swift +++ b/Tests/BridgeJSRuntimeTests/ExportAPITests.swift @@ -978,16 +978,25 @@ enum GraphOperations { // MARK: - Protocol Tests @JS protocol DataProcessor { - var count: Int { get set } - var name: String { get } - var optionalTag: String? { get set } - var optionalCount: Int? { get set } - var direction: Direction? { get set } - var optionalTheme: Theme? { get set } - var httpStatus: HttpStatus? { get set } - var apiResult: APIResult? { get set } - var helper: Greeter { get set } - var optionalHelper: Greeter? { get set } + var count: Int { get throws(JSException) } + var name: String { get throws(JSException) } + var optionalTag: String? { get throws(JSException) } + var optionalCount: Int? { get throws(JSException) } + var direction: Direction? { get throws(JSException) } + var optionalTheme: Theme? { get throws(JSException) } + var httpStatus: HttpStatus? { get throws(JSException) } + var apiResult: APIResult? { get throws(JSException) } + var helper: Greeter { get throws(JSException) } + var optionalHelper: Greeter? { get throws(JSException) } + func setCount(_ value: Int) throws(JSException) + func setOptionalTag(_ value: String?) throws(JSException) + func setOptionalCount(_ value: Int?) throws(JSException) + func setDirection(_ value: Direction?) throws(JSException) + func setOptionalTheme(_ value: Theme?) throws(JSException) + func setHttpStatus(_ value: HttpStatus?) throws(JSException) + func setApiResult(_ value: APIResult?) throws(JSException) + func setHelper(_ value: Greeter) throws(JSException) + func setOptionalHelper(_ value: Greeter?) throws(JSException) func increment(by amount: Int) throws(JSException) func getValue() throws(JSException) -> Int func setLabelElements(_ labelPrefix: String, _ labelSuffix: String) throws(JSException) @@ -1044,44 +1053,44 @@ enum GraphOperations { return backupProcessor != nil } - @JS func getProcessorOptionalTag() -> String? { - return processor.optionalTag + @JS func getProcessorOptionalTag() throws(JSException) -> String? { + return try processor.optionalTag } - @JS func setProcessorOptionalTag(_ tag: String?) { - processor.optionalTag = tag + @JS func setProcessorOptionalTag(_ tag: String?) throws(JSException) { + try processor.setOptionalTag(tag) } - @JS func getProcessorOptionalCount() -> Int? { - return processor.optionalCount + @JS func getProcessorOptionalCount() throws(JSException) -> Int? { + return try processor.optionalCount } - @JS func setProcessorOptionalCount(_ count: Int?) { - processor.optionalCount = count + @JS func setProcessorOptionalCount(_ count: Int?) throws(JSException) { + try processor.setOptionalCount(count) } - @JS func getProcessorDirection() -> Direction? { - return processor.direction + @JS func getProcessorDirection() throws(JSException) -> Direction? { + return try processor.direction } - @JS func setProcessorDirection(_ direction: Direction?) { - processor.direction = direction + @JS func setProcessorDirection(_ direction: Direction?) throws(JSException) { + try processor.setDirection(direction) } - @JS func getProcessorTheme() -> Theme? { - return processor.optionalTheme + @JS func getProcessorTheme() throws(JSException) -> Theme? { + return try processor.optionalTheme } - @JS func setProcessorTheme(_ theme: Theme?) { - processor.optionalTheme = theme + @JS func setProcessorTheme(_ theme: Theme?) throws(JSException) { + try processor.setOptionalTheme(theme) } - @JS func getProcessorHttpStatus() -> HttpStatus? { - return processor.httpStatus + @JS func getProcessorHttpStatus() throws(JSException) -> HttpStatus? { + return try processor.httpStatus } - @JS func setProcessorHttpStatus(_ status: HttpStatus?) { - processor.httpStatus = status + @JS func setProcessorHttpStatus(_ status: HttpStatus?) throws(JSException) { + try processor.setHttpStatus(status) } @JS func getProcessorAPIResult() throws(JSException) -> APIResult? { @@ -1108,6 +1117,42 @@ enum GraphOperations { @JS init() {} + @JS func setCount(_ value: Int) { + count = value + } + + @JS func setOptionalTag(_ value: String?) { + optionalTag = value + } + + @JS func setOptionalCount(_ value: Int?) { + optionalCount = value + } + + @JS func setDirection(_ value: Direction?) { + direction = value + } + + @JS func setOptionalTheme(_ value: Theme?) { + optionalTheme = value + } + + @JS func setHttpStatus(_ value: HttpStatus?) { + httpStatus = value + } + + @JS func setApiResult(_ value: APIResult?) { + apiResult = value + } + + @JS func setHelper(_ value: Greeter) { + helper = value + } + + @JS func setOptionalHelper(_ value: Greeter?) { + optionalHelper = value + } + @JS func increment(by amount: Int) { count += amount } diff --git a/Tests/BridgeJSRuntimeTests/Generated/BridgeJS.swift b/Tests/BridgeJSRuntimeTests/Generated/BridgeJS.swift index b9b7dc1d..167fded2 100644 --- a/Tests/BridgeJSRuntimeTests/Generated/BridgeJS.swift +++ b/Tests/BridgeJSRuntimeTests/Generated/BridgeJS.swift @@ -921,6 +921,87 @@ public func _invoke_swift_closure_BridgeJSRuntimeTests_20BridgeJSRuntimeTestsy_S struct AnyDataProcessor: DataProcessor, _BridgedSwiftProtocolWrapper { let jsObject: JSObject + func setCount(_ value: Int) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valueValue = value.bridgeJSLowerParameter() + _extern_setCount(jsObjectValue, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalTag(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setOptionalTag(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalCount(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setOptionalCount(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setDirection(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setDirection(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalTheme(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setOptionalTheme(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setHttpStatus(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueValue) = value.bridgeJSLowerParameter() + _extern_setHttpStatus(jsObjectValue, valueIsSome, valueValue) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setApiResult(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valueCaseId) = value.bridgeJSLowerParameter() + _extern_setApiResult(jsObjectValue, valueIsSome, valueCaseId) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setHelper(_ value: Greeter) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let valuePointer = value.bridgeJSLowerParameter() + _extern_setHelper(jsObjectValue, valuePointer) + if let error = _swift_js_take_exception() { + throw error + } + } + + func setOptionalHelper(_ value: Optional) throws(JSException) -> Void { + let jsObjectValue = jsObject.bridgeJSLowerParameter() + let (valueIsSome, valuePointer) = value.bridgeJSLowerParameter() + _extern_setOptionalHelper(jsObjectValue, valueIsSome, valuePointer) + if let error = _swift_js_take_exception() { + throw error + } + } + func increment(by amount: Int) throws(JSException) -> Void { let jsObjectValue = jsObject.bridgeJSLowerParameter() let amountValue = amount.bridgeJSLowerParameter() @@ -1024,128 +1105,113 @@ struct AnyDataProcessor: DataProcessor, _BridgedSwiftProtocolWrapper { } var count: Int { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_count_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Int.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValueValue = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_count_set(jsObjectValue, newValueValue) - } } var name: String { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_name_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return String.bridgeJSLiftReturn(ret) } } var optionalTag: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_DataProcessor_optionalTag_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_optionalTag_set(jsObjectValue, newValueIsSome, newValueValue) - } } var optionalCount: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_DataProcessor_optionalCount_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_optionalCount_set(jsObjectValue, newValueIsSome, newValueValue) - } } var direction: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_direction_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_direction_set(jsObjectValue, newValueIsSome, newValueValue) - } } var optionalTheme: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_DataProcessor_optionalTheme_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_optionalTheme_set(jsObjectValue, newValueIsSome, newValueValue) - } } var httpStatus: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() bjs_DataProcessor_httpStatus_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturnFromSideChannel() } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueValue) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_httpStatus_set(jsObjectValue, newValueIsSome, newValueValue) - } } var apiResult: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_apiResult_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValueCaseId) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_apiResult_set(jsObjectValue, newValueIsSome, newValueCaseId) - } } var helper: Greeter { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_helper_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Greeter.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let newValuePointer = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_helper_set(jsObjectValue, newValuePointer) - } } var optionalHelper: Optional { - get { + get throws(JSException) { let jsObjectValue = jsObject.bridgeJSLowerParameter() let ret = bjs_DataProcessor_optionalHelper_get(jsObjectValue) + if let error = _swift_js_take_exception() { + throw error + } return Optional.bridgeJSLiftReturn(ret) } - set { - let jsObjectValue = jsObject.bridgeJSLowerParameter() - let (newValueIsSome, newValuePointer) = newValue.bridgeJSLowerParameter() - bjs_DataProcessor_optionalHelper_set(jsObjectValue, newValueIsSome, newValuePointer) - } } static func bridgeJSLiftParameter(_ value: Int32) -> Self { @@ -1153,6 +1219,33 @@ struct AnyDataProcessor: DataProcessor, _BridgedSwiftProtocolWrapper { } } +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setCount") +fileprivate func _extern_setCount(_ jsObject: Int32, _ value: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setOptionalTag") +fileprivate func _extern_setOptionalTag(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setOptionalCount") +fileprivate func _extern_setOptionalCount(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setDirection") +fileprivate func _extern_setDirection(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setOptionalTheme") +fileprivate func _extern_setOptionalTheme(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setHttpStatus") +fileprivate func _extern_setHttpStatus(_ jsObject: Int32, _ valueIsSome: Int32, _ valueValue: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setApiResult") +fileprivate func _extern_setApiResult(_ jsObject: Int32, _ valueIsSome: Int32, _ valueCaseId: Int32) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setHelper") +fileprivate func _extern_setHelper(_ jsObject: Int32, _ value: UnsafeMutableRawPointer) -> Void + +@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_setOptionalHelper") +fileprivate func _extern_setOptionalHelper(_ jsObject: Int32, _ valueIsSome: Int32, _ valuePointer: UnsafeMutableRawPointer) -> Void + @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_increment") fileprivate func _extern_increment(_ jsObject: Int32, _ amount: Int32) -> Void @@ -1189,60 +1282,33 @@ fileprivate func _extern_getAPIResult(_ jsObject: Int32) -> Int32 @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_count_get") fileprivate func bjs_DataProcessor_count_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_count_set") -fileprivate func bjs_DataProcessor_count_set(_ jsObject: Int32, _ newValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_name_get") fileprivate func bjs_DataProcessor_name_get(_ jsObject: Int32) -> Int32 @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalTag_get") fileprivate func bjs_DataProcessor_optionalTag_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalTag_set") -fileprivate func bjs_DataProcessor_optionalTag_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalCount_get") fileprivate func bjs_DataProcessor_optionalCount_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalCount_set") -fileprivate func bjs_DataProcessor_optionalCount_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_direction_get") fileprivate func bjs_DataProcessor_direction_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_direction_set") -fileprivate func bjs_DataProcessor_direction_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalTheme_get") fileprivate func bjs_DataProcessor_optionalTheme_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalTheme_set") -fileprivate func bjs_DataProcessor_optionalTheme_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_httpStatus_get") fileprivate func bjs_DataProcessor_httpStatus_get(_ jsObject: Int32) -> Void -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_httpStatus_set") -fileprivate func bjs_DataProcessor_httpStatus_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueValue: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_apiResult_get") fileprivate func bjs_DataProcessor_apiResult_get(_ jsObject: Int32) -> Int32 -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_apiResult_set") -fileprivate func bjs_DataProcessor_apiResult_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValueCaseId: Int32) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_helper_get") fileprivate func bjs_DataProcessor_helper_get(_ jsObject: Int32) -> UnsafeMutableRawPointer -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_helper_set") -fileprivate func bjs_DataProcessor_helper_set(_ jsObject: Int32, _ newValue: UnsafeMutableRawPointer) -> Void - @_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalHelper_get") fileprivate func bjs_DataProcessor_optionalHelper_get(_ jsObject: Int32) -> UnsafeMutableRawPointer -@_extern(wasm, module: "BridgeJSRuntimeTests", name: "bjs_DataProcessor_optionalHelper_set") -fileprivate func bjs_DataProcessor_optionalHelper_set(_ jsObject: Int32, _ newValueIsSome: Int32, _ newValuePointer: UnsafeMutableRawPointer) -> Void - extension Direction: _BridgedSwiftCaseEnum { @_spi(BridgeJS) @_transparent public consuming func bridgeJSLowerParameter() -> Int32 { return bridgeJSRawValue @@ -6775,8 +6841,22 @@ public func _bjs_DataProcessorManager_hasBackup(_ _self: UnsafeMutableRawPointer @_cdecl("bjs_DataProcessorManager_getProcessorOptionalTag") public func _bjs_DataProcessorManager_getProcessorOptionalTag(_ _self: UnsafeMutableRawPointer) -> Void { #if arch(wasm32) - let ret = DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorOptionalTag() - return ret.bridgeJSLowerReturn() + do { + let ret = try DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorOptionalTag() + return ret.bridgeJSLowerReturn() + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6786,7 +6866,21 @@ public func _bjs_DataProcessorManager_getProcessorOptionalTag(_ _self: UnsafeMut @_cdecl("bjs_DataProcessorManager_setProcessorOptionalTag") public func _bjs_DataProcessorManager_setProcessorOptionalTag(_ _self: UnsafeMutableRawPointer, _ tagIsSome: Int32, _ tagBytes: Int32, _ tagLength: Int32) -> Void { #if arch(wasm32) - DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorOptionalTag(_: Optional.bridgeJSLiftParameter(tagIsSome, tagBytes, tagLength)) + do { + try DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorOptionalTag(_: Optional.bridgeJSLiftParameter(tagIsSome, tagBytes, tagLength)) + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6796,8 +6890,22 @@ public func _bjs_DataProcessorManager_setProcessorOptionalTag(_ _self: UnsafeMut @_cdecl("bjs_DataProcessorManager_getProcessorOptionalCount") public func _bjs_DataProcessorManager_getProcessorOptionalCount(_ _self: UnsafeMutableRawPointer) -> Void { #if arch(wasm32) - let ret = DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorOptionalCount() - return ret.bridgeJSLowerReturn() + do { + let ret = try DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorOptionalCount() + return ret.bridgeJSLowerReturn() + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6807,7 +6915,21 @@ public func _bjs_DataProcessorManager_getProcessorOptionalCount(_ _self: UnsafeM @_cdecl("bjs_DataProcessorManager_setProcessorOptionalCount") public func _bjs_DataProcessorManager_setProcessorOptionalCount(_ _self: UnsafeMutableRawPointer, _ countIsSome: Int32, _ countValue: Int32) -> Void { #if arch(wasm32) - DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorOptionalCount(_: Optional.bridgeJSLiftParameter(countIsSome, countValue)) + do { + try DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorOptionalCount(_: Optional.bridgeJSLiftParameter(countIsSome, countValue)) + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6817,8 +6939,22 @@ public func _bjs_DataProcessorManager_setProcessorOptionalCount(_ _self: UnsafeM @_cdecl("bjs_DataProcessorManager_getProcessorDirection") public func _bjs_DataProcessorManager_getProcessorDirection(_ _self: UnsafeMutableRawPointer) -> Void { #if arch(wasm32) - let ret = DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorDirection() - return ret.bridgeJSLowerReturn() + do { + let ret = try DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorDirection() + return ret.bridgeJSLowerReturn() + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6828,7 +6964,21 @@ public func _bjs_DataProcessorManager_getProcessorDirection(_ _self: UnsafeMutab @_cdecl("bjs_DataProcessorManager_setProcessorDirection") public func _bjs_DataProcessorManager_setProcessorDirection(_ _self: UnsafeMutableRawPointer, _ directionIsSome: Int32, _ directionValue: Int32) -> Void { #if arch(wasm32) - DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorDirection(_: Optional.bridgeJSLiftParameter(directionIsSome, directionValue)) + do { + try DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorDirection(_: Optional.bridgeJSLiftParameter(directionIsSome, directionValue)) + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6838,8 +6988,22 @@ public func _bjs_DataProcessorManager_setProcessorDirection(_ _self: UnsafeMutab @_cdecl("bjs_DataProcessorManager_getProcessorTheme") public func _bjs_DataProcessorManager_getProcessorTheme(_ _self: UnsafeMutableRawPointer) -> Void { #if arch(wasm32) - let ret = DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorTheme() - return ret.bridgeJSLowerReturn() + do { + let ret = try DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorTheme() + return ret.bridgeJSLowerReturn() + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6849,7 +7013,21 @@ public func _bjs_DataProcessorManager_getProcessorTheme(_ _self: UnsafeMutableRa @_cdecl("bjs_DataProcessorManager_setProcessorTheme") public func _bjs_DataProcessorManager_setProcessorTheme(_ _self: UnsafeMutableRawPointer, _ themeIsSome: Int32, _ themeBytes: Int32, _ themeLength: Int32) -> Void { #if arch(wasm32) - DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorTheme(_: Optional.bridgeJSLiftParameter(themeIsSome, themeBytes, themeLength)) + do { + try DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorTheme(_: Optional.bridgeJSLiftParameter(themeIsSome, themeBytes, themeLength)) + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6859,8 +7037,22 @@ public func _bjs_DataProcessorManager_setProcessorTheme(_ _self: UnsafeMutableRa @_cdecl("bjs_DataProcessorManager_getProcessorHttpStatus") public func _bjs_DataProcessorManager_getProcessorHttpStatus(_ _self: UnsafeMutableRawPointer) -> Void { #if arch(wasm32) - let ret = DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorHttpStatus() - return ret.bridgeJSLowerReturn() + do { + let ret = try DataProcessorManager.bridgeJSLiftParameter(_self).getProcessorHttpStatus() + return ret.bridgeJSLowerReturn() + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -6870,7 +7062,21 @@ public func _bjs_DataProcessorManager_getProcessorHttpStatus(_ _self: UnsafeMuta @_cdecl("bjs_DataProcessorManager_setProcessorHttpStatus") public func _bjs_DataProcessorManager_setProcessorHttpStatus(_ _self: UnsafeMutableRawPointer, _ statusIsSome: Int32, _ statusValue: Int32) -> Void { #if arch(wasm32) - DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorHttpStatus(_: Optional.bridgeJSLiftParameter(statusIsSome, statusValue)) + do { + try DataProcessorManager.bridgeJSLiftParameter(_self).setProcessorHttpStatus(_: Optional.bridgeJSLiftParameter(statusIsSome, statusValue)) + } catch let error { + if let error = error.thrownValue.object { + withExtendedLifetime(error) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } else { + let jsError = JSError(message: String(describing: error)) + withExtendedLifetime(jsError.jsObject) { + _swift_js_throw(Int32(bitPattern: $0.id)) + } + } + return + } #else fatalError("Only available on WebAssembly") #endif @@ -7005,6 +7211,96 @@ public func _bjs_SwiftDataProcessor_init() -> UnsafeMutableRawPointer { #endif } +@_expose(wasm, "bjs_SwiftDataProcessor_setCount") +@_cdecl("bjs_SwiftDataProcessor_setCount") +public func _bjs_SwiftDataProcessor_setCount(_ _self: UnsafeMutableRawPointer, _ value: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setCount(_: Int.bridgeJSLiftParameter(value)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setOptionalTag") +@_cdecl("bjs_SwiftDataProcessor_setOptionalTag") +public func _bjs_SwiftDataProcessor_setOptionalTag(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueBytes: Int32, _ valueLength: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setOptionalTag(_: Optional.bridgeJSLiftParameter(valueIsSome, valueBytes, valueLength)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setOptionalCount") +@_cdecl("bjs_SwiftDataProcessor_setOptionalCount") +public func _bjs_SwiftDataProcessor_setOptionalCount(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueValue: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setOptionalCount(_: Optional.bridgeJSLiftParameter(valueIsSome, valueValue)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setDirection") +@_cdecl("bjs_SwiftDataProcessor_setDirection") +public func _bjs_SwiftDataProcessor_setDirection(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueValue: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setDirection(_: Optional.bridgeJSLiftParameter(valueIsSome, valueValue)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setOptionalTheme") +@_cdecl("bjs_SwiftDataProcessor_setOptionalTheme") +public func _bjs_SwiftDataProcessor_setOptionalTheme(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueBytes: Int32, _ valueLength: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setOptionalTheme(_: Optional.bridgeJSLiftParameter(valueIsSome, valueBytes, valueLength)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setHttpStatus") +@_cdecl("bjs_SwiftDataProcessor_setHttpStatus") +public func _bjs_SwiftDataProcessor_setHttpStatus(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueValue: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setHttpStatus(_: Optional.bridgeJSLiftParameter(valueIsSome, valueValue)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setApiResult") +@_cdecl("bjs_SwiftDataProcessor_setApiResult") +public func _bjs_SwiftDataProcessor_setApiResult(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueCaseId: Int32) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setApiResult(_: Optional.bridgeJSLiftParameter(valueIsSome, valueCaseId)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setHelper") +@_cdecl("bjs_SwiftDataProcessor_setHelper") +public func _bjs_SwiftDataProcessor_setHelper(_ _self: UnsafeMutableRawPointer, _ value: UnsafeMutableRawPointer) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setHelper(_: Greeter.bridgeJSLiftParameter(value)) + #else + fatalError("Only available on WebAssembly") + #endif +} + +@_expose(wasm, "bjs_SwiftDataProcessor_setOptionalHelper") +@_cdecl("bjs_SwiftDataProcessor_setOptionalHelper") +public func _bjs_SwiftDataProcessor_setOptionalHelper(_ _self: UnsafeMutableRawPointer, _ valueIsSome: Int32, _ valueValue: UnsafeMutableRawPointer) -> Void { + #if arch(wasm32) + SwiftDataProcessor.bridgeJSLiftParameter(_self).setOptionalHelper(_: Optional.bridgeJSLiftParameter(valueIsSome, valueValue)) + #else + fatalError("Only available on WebAssembly") + #endif +} + @_expose(wasm, "bjs_SwiftDataProcessor_increment") @_cdecl("bjs_SwiftDataProcessor_increment") public func _bjs_SwiftDataProcessor_increment(_ _self: UnsafeMutableRawPointer, _ amount: Int32) -> Void { diff --git a/Tests/BridgeJSRuntimeTests/Generated/JavaScript/BridgeJS.json b/Tests/BridgeJSRuntimeTests/Generated/JavaScript/BridgeJS.json index 83845dd4..bf8ab808 100644 --- a/Tests/BridgeJSRuntimeTests/Generated/JavaScript/BridgeJS.json +++ b/Tests/BridgeJSRuntimeTests/Generated/JavaScript/BridgeJS.json @@ -1530,7 +1530,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "getProcessorOptionalTag", "parameters" : [ @@ -1551,7 +1551,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "setProcessorOptionalTag", "parameters" : [ @@ -1580,7 +1580,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "getProcessorOptionalCount", "parameters" : [ @@ -1601,7 +1601,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "setProcessorOptionalCount", "parameters" : [ @@ -1630,7 +1630,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "getProcessorDirection", "parameters" : [ @@ -1651,7 +1651,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "setProcessorDirection", "parameters" : [ @@ -1680,7 +1680,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "getProcessorTheme", "parameters" : [ @@ -1702,7 +1702,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "setProcessorTheme", "parameters" : [ @@ -1732,7 +1732,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "getProcessorHttpStatus", "parameters" : [ @@ -1754,7 +1754,7 @@ "effects" : { "isAsync" : false, "isStatic" : false, - "isThrows" : false + "isThrows" : true }, "name" : "setProcessorHttpStatus", "parameters" : [ @@ -1873,17 +1873,17 @@ }, "methods" : [ { - "abiName" : "bjs_SwiftDataProcessor_increment", + "abiName" : "bjs_SwiftDataProcessor_setCount", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "increment", + "name" : "setCount", "parameters" : [ { - "label" : "by", - "name" : "amount", + "label" : "_", + "name" : "value", "type" : { "int" : { @@ -1898,46 +1898,82 @@ } }, { - "abiName" : "bjs_SwiftDataProcessor_getValue", + "abiName" : "bjs_SwiftDataProcessor_setOptionalTag", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "getValue", + "name" : "setOptionalTag", "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "string" : { + } + } + } + } + } ], "returnType" : { - "int" : { + "void" : { } } }, { - "abiName" : "bjs_SwiftDataProcessor_setLabelElements", + "abiName" : "bjs_SwiftDataProcessor_setOptionalCount", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "setLabelElements", + "name" : "setOptionalCount", "parameters" : [ { "label" : "_", - "name" : "labelPrefix", + "name" : "value", "type" : { - "string" : { + "optional" : { + "_0" : { + "int" : { + } + } } } - }, + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_setDirection", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "setDirection", + "parameters" : [ { "label" : "_", - "name" : "labelSuffix", + "name" : "value", "type" : { - "string" : { - + "optional" : { + "_0" : { + "caseEnum" : { + "_0" : "Direction" + } + } } } } @@ -1949,93 +1985,131 @@ } }, { - "abiName" : "bjs_SwiftDataProcessor_getLabel", + "abiName" : "bjs_SwiftDataProcessor_setOptionalTheme", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "getLabel", + "name" : "setOptionalTheme", "parameters" : [ - + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "Theme", + "_1" : "String" + } + } + } + } + } ], "returnType" : { - "string" : { + "void" : { } } }, { - "abiName" : "bjs_SwiftDataProcessor_isEven", + "abiName" : "bjs_SwiftDataProcessor_setHttpStatus", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "isEven", + "name" : "setHttpStatus", "parameters" : [ - + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "HttpStatus", + "_1" : "Int" + } + } + } + } + } ], "returnType" : { - "bool" : { + "void" : { } } }, { - "abiName" : "bjs_SwiftDataProcessor_processGreeter", + "abiName" : "bjs_SwiftDataProcessor_setApiResult", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "processGreeter", + "name" : "setApiResult", "parameters" : [ { "label" : "_", - "name" : "greeter", + "name" : "value", "type" : { - "swiftHeapObject" : { - "_0" : "Greeter" + "optional" : { + "_0" : { + "associatedValueEnum" : { + "_0" : "APIResult" + } + } } } } ], "returnType" : { - "string" : { + "void" : { } } }, { - "abiName" : "bjs_SwiftDataProcessor_createGreeter", + "abiName" : "bjs_SwiftDataProcessor_setHelper", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "createGreeter", + "name" : "setHelper", "parameters" : [ - + { + "label" : "_", + "name" : "value", + "type" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } ], "returnType" : { - "swiftHeapObject" : { - "_0" : "Greeter" + "void" : { + } } }, { - "abiName" : "bjs_SwiftDataProcessor_processOptionalGreeter", + "abiName" : "bjs_SwiftDataProcessor_setOptionalHelper", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "processOptionalGreeter", + "name" : "setOptionalHelper", "parameters" : [ { "label" : "_", - "name" : "greeter", + "name" : "value", "type" : { "optional" : { "_0" : { @@ -2048,51 +2122,77 @@ } ], "returnType" : { - "string" : { + "void" : { } } }, { - "abiName" : "bjs_SwiftDataProcessor_createOptionalGreeter", + "abiName" : "bjs_SwiftDataProcessor_increment", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "createOptionalGreeter", + "name" : "increment", + "parameters" : [ + { + "label" : "by", + "name" : "amount", + "type" : { + "int" : { + + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_getValue", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "getValue", "parameters" : [ ], "returnType" : { - "optional" : { - "_0" : { - "swiftHeapObject" : { - "_0" : "Greeter" - } - } + "int" : { + } } }, { - "abiName" : "bjs_SwiftDataProcessor_handleAPIResult", + "abiName" : "bjs_SwiftDataProcessor_setLabelElements", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "handleAPIResult", + "name" : "setLabelElements", "parameters" : [ { "label" : "_", - "name" : "result", + "name" : "labelPrefix", "type" : { - "optional" : { - "_0" : { - "associatedValueEnum" : { - "_0" : "APIResult" - } - } + "string" : { + + } + } + }, + { + "label" : "_", + "name" : "labelSuffix", + "type" : { + "string" : { + } } } @@ -2104,54 +2204,209 @@ } }, { - "abiName" : "bjs_SwiftDataProcessor_getAPIResult", + "abiName" : "bjs_SwiftDataProcessor_getLabel", "effects" : { "isAsync" : false, "isStatic" : false, "isThrows" : false }, - "name" : "getAPIResult", + "name" : "getLabel", "parameters" : [ ], "returnType" : { - "optional" : { - "_0" : { - "associatedValueEnum" : { - "_0" : "APIResult" - } - } - } - } - } - ], - "name" : "SwiftDataProcessor", - "properties" : [ - { - "isReadonly" : false, - "isStatic" : false, - "name" : "count", - "type" : { - "int" : { + "string" : { } } }, { - "isReadonly" : true, - "isStatic" : false, - "name" : "name", - "type" : { - "string" : { + "abiName" : "bjs_SwiftDataProcessor_isEven", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "isEven", + "parameters" : [ + + ], + "returnType" : { + "bool" : { } } }, { - "isReadonly" : false, - "isStatic" : false, - "name" : "optionalTag", - "type" : { + "abiName" : "bjs_SwiftDataProcessor_processGreeter", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "processGreeter", + "parameters" : [ + { + "label" : "_", + "name" : "greeter", + "type" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } + ], + "returnType" : { + "string" : { + + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_createGreeter", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "createGreeter", + "parameters" : [ + + ], + "returnType" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_processOptionalGreeter", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "processOptionalGreeter", + "parameters" : [ + { + "label" : "_", + "name" : "greeter", + "type" : { + "optional" : { + "_0" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } + } + } + ], + "returnType" : { + "string" : { + + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_createOptionalGreeter", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "createOptionalGreeter", + "parameters" : [ + + ], + "returnType" : { + "optional" : { + "_0" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_handleAPIResult", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "handleAPIResult", + "parameters" : [ + { + "label" : "_", + "name" : "result", + "type" : { + "optional" : { + "_0" : { + "associatedValueEnum" : { + "_0" : "APIResult" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_SwiftDataProcessor_getAPIResult", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : false + }, + "name" : "getAPIResult", + "parameters" : [ + + ], + "returnType" : { + "optional" : { + "_0" : { + "associatedValueEnum" : { + "_0" : "APIResult" + } + } + } + } + } + ], + "name" : "SwiftDataProcessor", + "properties" : [ + { + "isReadonly" : false, + "isStatic" : false, + "name" : "count", + "type" : { + "int" : { + + } + } + }, + { + "isReadonly" : true, + "isStatic" : false, + "name" : "name", + "type" : { + "string" : { + + } + } + }, + { + "isReadonly" : false, + "isStatic" : false, + "name" : "optionalTag", + "type" : { "optional" : { "_0" : { "string" : { @@ -9839,6 +10094,261 @@ "protocols" : [ { "methods" : [ + { + "abiName" : "bjs_DataProcessor_setCount", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setCount", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "int" : { + + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setOptionalTag", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalTag", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "string" : { + + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setOptionalCount", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalCount", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "int" : { + + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setDirection", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setDirection", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "caseEnum" : { + "_0" : "Direction" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setOptionalTheme", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalTheme", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "Theme", + "_1" : "String" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setHttpStatus", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setHttpStatus", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "rawValueEnum" : { + "_0" : "HttpStatus", + "_1" : "Int" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setApiResult", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setApiResult", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "associatedValueEnum" : { + "_0" : "APIResult" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setHelper", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setHelper", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, + { + "abiName" : "bjs_DataProcessor_setOptionalHelper", + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "name" : "setOptionalHelper", + "parameters" : [ + { + "label" : "_", + "name" : "value", + "type" : { + "optional" : { + "_0" : { + "swiftHeapObject" : { + "_0" : "Greeter" + } + } + } + } + } + ], + "returnType" : { + "void" : { + + } + } + }, { "abiName" : "bjs_DataProcessor_increment", "effects" : { @@ -10095,7 +10605,12 @@ "name" : "DataProcessor", "properties" : [ { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "count", "type" : { "int" : { @@ -10104,6 +10619,11 @@ } }, { + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, "isReadonly" : true, "name" : "name", "type" : { @@ -10113,7 +10633,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalTag", "type" : { "optional" : { @@ -10126,7 +10651,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalCount", "type" : { "optional" : { @@ -10139,7 +10669,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "direction", "type" : { "optional" : { @@ -10152,7 +10687,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalTheme", "type" : { "optional" : { @@ -10166,7 +10706,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "httpStatus", "type" : { "optional" : { @@ -10180,7 +10725,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "apiResult", "type" : { "optional" : { @@ -10193,7 +10743,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "helper", "type" : { "swiftHeapObject" : { @@ -10202,7 +10757,12 @@ } }, { - "isReadonly" : false, + "effects" : { + "isAsync" : false, + "isStatic" : false, + "isThrows" : true + }, + "isReadonly" : true, "name" : "optionalHelper", "type" : { "optional" : {