Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 11 additions & 44 deletions Plugins/BridgeJS/Sources/BridgeJSCore/ExportSwift.swift
Original file line number Diff line number Diff line change
Expand Up @@ -779,30 +779,11 @@ struct StackCodegen {
func liftExpression(for type: BridgeType) -> ExprSyntax {
switch type {
case .string, .int, .uint, .bool, .float, .double,
.jsObject(nil), .jsValue, .swiftStruct, .swiftHeapObject:
.jsObject(nil), .jsValue, .swiftStruct, .swiftHeapObject, .unsafePointer,
.swiftProtocol, .caseEnum, .associatedValueEnum, .rawValueEnum:
return "\(raw: type.swiftType).bridgeJSLiftParameter()"
case .jsObject(let className?):
return "\(raw: className)(unsafelyWrapping: JSObject.bridgeJSLiftParameter())"
case .unsafePointer:
return "\(raw: type.swiftType).bridgeJSLiftParameter()"
case .swiftProtocol(let protocolName):
return "Any\(raw: protocolName).bridgeJSLiftParameter(_swift_js_pop_i32())"
case .caseEnum:
return "\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_i32())"
case .rawValueEnum(_, let rawType):
switch rawType {
case .string:
return
"\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_i32(), _swift_js_pop_i32())"
case .float:
return "\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_f32())"
case .double:
return "\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_f64())"
case .bool, .int, .int32, .int64, .uint, .uint32, .uint64:
return "\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_i32())"
}
case .associatedValueEnum:
return "\(raw: type.swiftType).bridgeJSLiftParameter(_swift_js_pop_i32())"
case .nullable(let wrappedType, let kind):
return liftNullableExpression(wrappedType: wrappedType, kind: kind)
case .array(let elementType):
Expand All @@ -820,8 +801,6 @@ struct StackCodegen {
switch elementType {
case .jsObject(let className?) where className != "JSObject":
return liftArrayExpressionInline(elementType: elementType)
case .swiftProtocol(let protocolName):
return "[Any\(raw: protocolName)].bridgeJSLiftParameter()"
case .nullable, .closure:
return liftArrayExpressionInline(elementType: elementType)
case .void, .namespaceEnum:
Expand Down Expand Up @@ -857,13 +836,6 @@ struct StackCodegen {
return __dict.mapValues { \(raw: className)(unsafelyWrapping: $0) }
}()
"""
case .swiftProtocol(let protocolName):
return """
{
let __dict = [String: JSObject].bridgeJSLiftParameter()
return __dict.mapValues { $0 as! Any\(raw: protocolName) }
}()
"""
case .nullable, .closure:
return liftDictionaryExpressionInline(valueType: valueType)
case .void, .namespaceEnum:
Expand Down Expand Up @@ -917,19 +889,14 @@ struct StackCodegen {
varPrefix: String
) -> [CodeBlockItemSyntax] {
switch type {
case .string, .int, .uint, .bool, .float, .double, .jsValue:
return ["\(raw: accessor).bridgeJSLowerStackReturn()"]
case .jsObject(nil):
case .string, .int, .uint, .bool, .float, .double, .jsValue,
.jsObject(nil), .swiftHeapObject, .unsafePointer, .closure,
.caseEnum, .rawValueEnum:
return ["\(raw: accessor).bridgeJSLowerStackReturn()"]
case .jsObject(_?):
return ["\(raw: accessor).jsObject.bridgeJSLowerStackReturn()"]
case .swiftHeapObject, .unsafePointer, .closure:
return ["\(raw: accessor).bridgeJSLowerStackReturn()"]
case .swiftProtocol(let protocolName):
let wrapperName = "Any\(protocolName)"
return ["(\(raw: accessor) as! \(raw: wrapperName)).bridgeJSLowerStackReturn()"]
case .caseEnum, .rawValueEnum:
return ["\(raw: accessor).bridgeJSLowerStackReturn()"]
case .swiftProtocol:
return ["(\(raw: accessor) as! \(raw: type.swiftType)).bridgeJSLowerStackReturn()"]
case .associatedValueEnum, .swiftStruct:
return ["\(raw: accessor).bridgeJSLowerReturn()"]
case .nullable(let wrappedType, _):
Expand All @@ -951,8 +918,8 @@ struct StackCodegen {
switch elementType {
case .jsObject(let className?) where className != "JSObject":
return ["\(raw: accessor).map { $0.jsObject }.bridgeJSLowerReturn()"]
case .swiftProtocol(let protocolName):
return ["\(raw: accessor).map { $0 as! Any\(raw: protocolName) }.bridgeJSLowerReturn()"]
case .swiftProtocol:
return ["\(raw: accessor).map { $0 as! \(raw: elementType.swiftType) }.bridgeJSLowerReturn()"]
case .nullable, .closure:
return lowerArrayStatementsInline(
elementType: elementType,
Expand Down Expand Up @@ -998,8 +965,8 @@ struct StackCodegen {
switch valueType {
case .jsObject(let className?) where className != "JSObject":
return ["\(raw: accessor).mapValues { $0.jsObject }.bridgeJSLowerReturn()"]
case .swiftProtocol(let protocolName):
return ["\(raw: accessor).mapValues { $0 as! Any\(raw: protocolName) }.bridgeJSLowerReturn()"]
case .swiftProtocol:
return ["\(raw: accessor).mapValues { $0 as! \(raw: valueType.swiftType) }.bridgeJSLowerReturn()"]
case .nullable, .closure:
return lowerDictionaryStatementsInline(
valueType: valueType,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,9 @@ extension TypedPayloadResult: _BridgedSwiftAssociatedValueEnum {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPopPayload(_ caseId: Int32) -> TypedPayloadResult {
switch caseId {
case 0:
return .precision(Precision.bridgeJSLiftParameter(_swift_js_pop_f32()))
return .precision(Precision.bridgeJSLiftParameter())
case 1:
return .direction(CardinalDirection.bridgeJSLiftParameter(_swift_js_pop_i32()))
return .direction(CardinalDirection.bridgeJSLiftParameter())
case 2:
return .optPrecision(Optional<Precision>.bridgeJSLiftParameter())
case 3:
Expand Down Expand Up @@ -312,7 +312,7 @@ extension AllTypesResult: _BridgedSwiftAssociatedValueEnum {
case 2:
return .jsObjectPayload(JSObject.bridgeJSLiftParameter())
case 3:
return .nestedEnum(APIResult.bridgeJSLiftParameter(_swift_js_pop_i32()))
return .nestedEnum(APIResult.bridgeJSLiftParameter())
case 4:
return .arrayPayload([Int].bridgeJSLiftParameter())
case 5:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ fileprivate func _bjs_struct_lift_Session() -> Int32 {
extension Measurement: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter() -> Measurement {
let optionalPrecision = Optional<Precision>.bridgeJSLiftParameter()
let precision = Precision.bridgeJSLiftParameter(_swift_js_pop_f32())
let precision = Precision.bridgeJSLiftParameter()
let value = Double.bridgeJSLiftParameter()
return Measurement(value: value, precision: precision, optionalPrecision: optionalPrecision)
}
Expand Down
18 changes: 9 additions & 9 deletions Tests/BridgeJSRuntimeTests/Generated/BridgeJS.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2198,7 +2198,7 @@ extension AllTypesResult: _BridgedSwiftAssociatedValueEnum {
case 2:
return .jsObjectPayload(JSObject.bridgeJSLiftParameter())
case 3:
return .nestedEnum(APIResult.bridgeJSLiftParameter(_swift_js_pop_i32()))
return .nestedEnum(APIResult.bridgeJSLiftParameter())
case 4:
return .arrayPayload([Int].bridgeJSLiftParameter())
case 5:
Expand Down Expand Up @@ -2240,9 +2240,9 @@ extension TypedPayloadResult: _BridgedSwiftAssociatedValueEnum {
@_spi(BridgeJS) @_transparent public static func bridgeJSStackPopPayload(_ caseId: Int32) -> TypedPayloadResult {
switch caseId {
case 0:
return .precision(Precision.bridgeJSLiftParameter(_swift_js_pop_f32()))
return .precision(Precision.bridgeJSLiftParameter())
case 1:
return .direction(Direction.bridgeJSLiftParameter(_swift_js_pop_i32()))
return .direction(Direction.bridgeJSLiftParameter())
case 2:
return .optPrecision(Optional<Precision>.bridgeJSLiftParameter())
case 3:
Expand Down Expand Up @@ -2992,7 +2992,7 @@ fileprivate func _bjs_struct_lift_Contact() -> Int32 {

extension Config: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter() -> Config {
let status = Status.bridgeJSLiftParameter(_swift_js_pop_i32())
let status = Status.bridgeJSLiftParameter()
let direction = Optional<Direction>.bridgeJSLiftParameter()
let theme = Optional<Theme>.bridgeJSLiftParameter()
let name = String.bridgeJSLiftParameter()
Expand Down Expand Up @@ -3100,7 +3100,7 @@ extension ValidationReport: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter() -> ValidationReport {
let outcome = Optional<APIResult>.bridgeJSLiftParameter()
let status = Optional<Status>.bridgeJSLiftParameter()
let result = APIResult.bridgeJSLiftParameter(_swift_js_pop_i32())
let result = APIResult.bridgeJSLiftParameter()
let id = Int.bridgeJSLiftParameter()
return ValidationReport(id: id, result: result, status: status, outcome: outcome)
}
Expand Down Expand Up @@ -3160,8 +3160,8 @@ extension AdvancedConfig: _BridgedSwiftStruct {
let location = Optional<DataPoint>.bridgeJSLiftParameter()
let metadata = Optional<JSObject>.bridgeJSLiftParameter()
let result = Optional<APIResult>.bridgeJSLiftParameter()
let status = Status.bridgeJSLiftParameter(_swift_js_pop_i32())
let theme = Theme.bridgeJSLiftParameter(_swift_js_pop_i32(), _swift_js_pop_i32())
let status = Status.bridgeJSLiftParameter()
let theme = Theme.bridgeJSLiftParameter()
let enabled = Bool.bridgeJSLiftParameter()
let title = String.bridgeJSLiftParameter()
let id = Int.bridgeJSLiftParameter()
Expand Down Expand Up @@ -3226,8 +3226,8 @@ extension MeasurementConfig: _BridgedSwiftStruct {
@_spi(BridgeJS) @_transparent public static func bridgeJSLiftParameter() -> MeasurementConfig {
let optionalRatio = Optional<Ratio>.bridgeJSLiftParameter()
let optionalPrecision = Optional<Precision>.bridgeJSLiftParameter()
let ratio = Ratio.bridgeJSLiftParameter(_swift_js_pop_f64())
let precision = Precision.bridgeJSLiftParameter(_swift_js_pop_f32())
let ratio = Ratio.bridgeJSLiftParameter()
let precision = Precision.bridgeJSLiftParameter()
return MeasurementConfig(precision: precision, ratio: ratio, optionalPrecision: optionalPrecision, optionalRatio: optionalRatio)
}

Expand Down