@@ -804,7 +804,7 @@ struct StackCodegen {
804804 func liftExpression( for type: BridgeType ) -> ExprSyntax {
805805 switch type {
806806 case . string, . int, . uint, . bool, . float, . double,
807- . jsObject( nil ) , . swiftStruct, . swiftHeapObject:
807+ . jsObject( nil ) , . jsValue , . swiftStruct, . swiftHeapObject:
808808 return " \( raw: type. swiftType) .bridgeJSLiftParameter() "
809809 case . jsObject( let className? ) :
810810 return " \( raw: className) (unsafelyWrapping: JSObject.bridgeJSLiftParameter()) "
@@ -841,7 +841,7 @@ struct StackCodegen {
841841
842842 func liftArrayExpression( elementType: BridgeType ) -> ExprSyntax {
843843 switch elementType {
844- case . int, . uint, . float, . double, . string, . bool,
844+ case . int, . uint, . float, . double, . string, . bool, . jsValue ,
845845 . jsObject( nil ) , . swiftStruct, . caseEnum, . swiftHeapObject,
846846 . unsafePointer, . rawValueEnum, . associatedValueEnum:
847847 return " [ \( raw: elementType. swiftType) ].bridgeJSLiftParameter() "
@@ -876,7 +876,7 @@ struct StackCodegen {
876876 private func liftNullableExpression( wrappedType: BridgeType , kind: JSOptionalKind ) -> ExprSyntax {
877877 let typeName = kind == . null ? " Optional " : " JSUndefinedOr "
878878 switch wrappedType {
879- case . string, . int, . uint, . bool, . float, . double, . jsObject( nil ) ,
879+ case . string, . int, . uint, . bool, . float, . double, . jsObject( nil ) , . jsValue ,
880880 . swiftStruct, . swiftHeapObject, . caseEnum, . associatedValueEnum, . rawValueEnum:
881881 return " \( raw: typeName) < \( raw: wrappedType. swiftType) >.bridgeJSLiftParameter() "
882882 case . jsObject( let className? ) :
@@ -914,7 +914,7 @@ struct StackCodegen {
914914 varPrefix: String
915915 ) -> [ CodeBlockItemSyntax ] {
916916 switch type {
917- case . string, . int, . uint, . bool, . float, . double:
917+ case . string, . int, . uint, . bool, . float, . double, . jsValue :
918918 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
919919 case . jsObject( nil ) :
920920 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
@@ -944,7 +944,7 @@ struct StackCodegen {
944944 varPrefix: String
945945 ) -> [ CodeBlockItemSyntax ] {
946946 switch elementType {
947- case . int, . uint, . float, . double, . string, . bool,
947+ case . int, . uint, . float, . double, . string, . bool, . jsValue ,
948948 . jsObject( nil ) , . swiftStruct, . caseEnum, . swiftHeapObject,
949949 . unsafePointer, . rawValueEnum, . associatedValueEnum:
950950 return [ " \( raw: accessor) .bridgeJSLowerReturn() " ]
@@ -1015,7 +1015,7 @@ struct StackCodegen {
10151015 varPrefix: String
10161016 ) -> [ CodeBlockItemSyntax ] {
10171017 switch wrappedType {
1018- case . string, . int, . uint, . bool, . float, . double:
1018+ case . string, . int, . uint, . bool, . float, . double, . jsValue :
10191019 return [ " \( raw: unwrappedVar) .bridgeJSLowerStackReturn() " ]
10201020 case . caseEnum, . rawValueEnum:
10211021 // Enums conform to _BridgedSwiftStackType
@@ -1604,6 +1604,7 @@ extension BridgeType {
16041604 case . float: return " Float "
16051605 case . double: return " Double "
16061606 case . string: return " String "
1607+ case . jsValue: return " JSValue "
16071608 case . jsObject( nil ) : return " JSObject "
16081609 case . jsObject( let name? ) : return name
16091610 case . swiftHeapObject( let name) : return name
@@ -1634,6 +1635,7 @@ extension BridgeType {
16341635 static let double = LiftingIntrinsicInfo ( parameters: [ ( " value " , . f64) ] )
16351636 static let string = LiftingIntrinsicInfo ( parameters: [ ( " bytes " , . i32) , ( " length " , . i32) ] )
16361637 static let jsObject = LiftingIntrinsicInfo ( parameters: [ ( " value " , . i32) ] )
1638+ static let jsValue = LiftingIntrinsicInfo ( parameters: [ ( " kind " , . i32) , ( " payload1 " , . i32) , ( " payload2 " , . f64) ] )
16371639 static let swiftHeapObject = LiftingIntrinsicInfo ( parameters: [ ( " value " , . pointer) ] )
16381640 static let unsafePointer = LiftingIntrinsicInfo ( parameters: [ ( " pointer " , . pointer) ] )
16391641 static let void = LiftingIntrinsicInfo ( parameters: [ ] )
@@ -1651,6 +1653,7 @@ extension BridgeType {
16511653 case . double: return . double
16521654 case . string: return . string
16531655 case . jsObject: return . jsObject
1656+ case . jsValue: return . jsValue
16541657 case . swiftHeapObject: return . swiftHeapObject
16551658 case . unsafePointer: return . unsafePointer
16561659 case . swiftProtocol: return . jsObject
@@ -1684,6 +1687,7 @@ extension BridgeType {
16841687 static let double = LoweringIntrinsicInfo ( returnType: . f64)
16851688 static let string = LoweringIntrinsicInfo ( returnType: nil )
16861689 static let jsObject = LoweringIntrinsicInfo ( returnType: . i32)
1690+ static let jsValue = LoweringIntrinsicInfo ( returnType: nil )
16871691 static let swiftHeapObject = LoweringIntrinsicInfo ( returnType: . pointer)
16881692 static let unsafePointer = LoweringIntrinsicInfo ( returnType: . pointer)
16891693 static let void = LoweringIntrinsicInfo ( returnType: nil )
@@ -1703,6 +1707,7 @@ extension BridgeType {
17031707 case . double: return . double
17041708 case . string: return . string
17051709 case . jsObject: return . jsObject
1710+ case . jsValue: return . jsValue
17061711 case . swiftHeapObject: return . swiftHeapObject
17071712 case . unsafePointer: return . unsafePointer
17081713 case . swiftProtocol: return . jsObject
0 commit comments