@@ -779,30 +779,11 @@ struct StackCodegen {
779779 func liftExpression( for type: BridgeType ) -> ExprSyntax {
780780 switch type {
781781 case . string, . int, . uint, . bool, . float, . double,
782- . jsObject( nil ) , . jsValue, . swiftStruct, . swiftHeapObject:
782+ . jsObject( nil ) , . jsValue, . swiftStruct, . swiftHeapObject, . unsafePointer,
783+ . swiftProtocol, . caseEnum, . associatedValueEnum, . rawValueEnum:
783784 return " \( raw: type. swiftType) .bridgeJSLiftParameter() "
784785 case . jsObject( let className? ) :
785786 return " \( raw: className) (unsafelyWrapping: JSObject.bridgeJSLiftParameter()) "
786- case . unsafePointer:
787- return " \( raw: type. swiftType) .bridgeJSLiftParameter() "
788- case . swiftProtocol( let protocolName) :
789- return " Any \( raw: protocolName) .bridgeJSLiftParameter(_swift_js_pop_i32()) "
790- case . caseEnum:
791- return " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_i32()) "
792- case . rawValueEnum( _, let rawType) :
793- switch rawType {
794- case . string:
795- return
796- " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_i32(), _swift_js_pop_i32()) "
797- case . float:
798- return " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_f32()) "
799- case . double:
800- return " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_f64()) "
801- case . bool, . int, . int32, . int64, . uint, . uint32, . uint64:
802- return " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_i32()) "
803- }
804- case . associatedValueEnum:
805- return " \( raw: type. swiftType) .bridgeJSLiftParameter(_swift_js_pop_i32()) "
806787 case . nullable( let wrappedType, let kind) :
807788 return liftNullableExpression ( wrappedType: wrappedType, kind: kind)
808789 case . array( let elementType) :
@@ -820,8 +801,6 @@ struct StackCodegen {
820801 switch elementType {
821802 case . jsObject( let className? ) where className != " JSObject " :
822803 return liftArrayExpressionInline ( elementType: elementType)
823- case . swiftProtocol( let protocolName) :
824- return " [Any \( raw: protocolName) ].bridgeJSLiftParameter() "
825804 case . nullable, . closure:
826805 return liftArrayExpressionInline ( elementType: elementType)
827806 case . void, . namespaceEnum:
@@ -857,13 +836,6 @@ struct StackCodegen {
857836 return __dict.mapValues { \( raw: className) (unsafelyWrapping: $0) }
858837 }()
859838 """
860- case . swiftProtocol( let protocolName) :
861- return """
862- {
863- let __dict = [String: JSObject].bridgeJSLiftParameter()
864- return __dict.mapValues { $0 as! Any \( raw: protocolName) }
865- }()
866- """
867839 case . nullable, . closure:
868840 return liftDictionaryExpressionInline ( valueType: valueType)
869841 case . void, . namespaceEnum:
@@ -917,19 +889,14 @@ struct StackCodegen {
917889 varPrefix: String
918890 ) -> [ CodeBlockItemSyntax ] {
919891 switch type {
920- case . string, . int, . uint, . bool, . float, . double, . jsValue:
921- return [ " \( raw : accessor ) .bridgeJSLowerStackReturn() " ]
922- case . jsObject ( nil ) :
892+ case . string, . int, . uint, . bool, . float, . double, . jsValue,
893+ . jsObject ( nil ) , . swiftHeapObject , . unsafePointer , . closure ,
894+ . caseEnum , . rawValueEnum :
923895 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
924896 case . jsObject( _? ) :
925897 return [ " \( raw: accessor) .jsObject.bridgeJSLowerStackReturn() " ]
926- case . swiftHeapObject, . unsafePointer, . closure:
927- return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
928- case . swiftProtocol( let protocolName) :
929- let wrapperName = " Any \( protocolName) "
930- return [ " ( \( raw: accessor) as! \( raw: wrapperName) ).bridgeJSLowerStackReturn() " ]
931- case . caseEnum, . rawValueEnum:
932- return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
898+ case . swiftProtocol:
899+ return [ " ( \( raw: accessor) as! \( raw: type. swiftType) ).bridgeJSLowerStackReturn() " ]
933900 case . associatedValueEnum, . swiftStruct:
934901 return [ " \( raw: accessor) .bridgeJSLowerReturn() " ]
935902 case . nullable( let wrappedType, _) :
@@ -951,8 +918,8 @@ struct StackCodegen {
951918 switch elementType {
952919 case . jsObject( let className? ) where className != " JSObject " :
953920 return [ " \( raw: accessor) .map { $0.jsObject }.bridgeJSLowerReturn() " ]
954- case . swiftProtocol( let protocolName ) :
955- return [ " \( raw: accessor) .map { $0 as! Any \( raw: protocolName ) }.bridgeJSLowerReturn() " ]
921+ case . swiftProtocol:
922+ return [ " \( raw: accessor) .map { $0 as! \( raw: elementType . swiftType ) }.bridgeJSLowerReturn() " ]
956923 case . nullable, . closure:
957924 return lowerArrayStatementsInline (
958925 elementType: elementType,
@@ -998,8 +965,8 @@ struct StackCodegen {
998965 switch valueType {
999966 case . jsObject( let className? ) where className != " JSObject " :
1000967 return [ " \( raw: accessor) .mapValues { $0.jsObject }.bridgeJSLowerReturn() " ]
1001- case . swiftProtocol( let protocolName ) :
1002- return [ " \( raw: accessor) .mapValues { $0 as! Any \( raw: protocolName ) }.bridgeJSLowerReturn() " ]
968+ case . swiftProtocol:
969+ return [ " \( raw: accessor) .mapValues { $0 as! \( raw: valueType . swiftType ) }.bridgeJSLowerReturn() " ]
1003970 case . nullable, . closure:
1004971 return lowerDictionaryStatementsInline (
1005972 valueType: valueType,
0 commit comments