@@ -801,8 +801,6 @@ struct StackCodegen {
801801 switch elementType {
802802 case . jsObject( let className? ) where className != " JSObject " :
803803 return liftArrayExpressionInline ( elementType: elementType)
804- case . swiftProtocol( let protocolName) :
805- return " [Any \( raw: protocolName) ].bridgeJSLiftParameter() "
806804 case . nullable, . closure:
807805 return liftArrayExpressionInline ( elementType: elementType)
808806 case . void, . namespaceEnum:
@@ -838,13 +836,6 @@ struct StackCodegen {
838836 return __dict.mapValues { \( raw: className) (unsafelyWrapping: $0) }
839837 }()
840838 """
841- case . swiftProtocol( let protocolName) :
842- return """
843- {
844- let __dict = [String: JSObject].bridgeJSLiftParameter()
845- return __dict.mapValues { $0 as! Any \( raw: protocolName) }
846- }()
847- """
848839 case . nullable, . closure:
849840 return liftDictionaryExpressionInline ( valueType: valueType)
850841 case . void, . namespaceEnum:
@@ -898,19 +889,14 @@ struct StackCodegen {
898889 varPrefix: String
899890 ) -> [ CodeBlockItemSyntax ] {
900891 switch type {
901- case . string, . int, . uint, . bool, . float, . double, . jsValue:
902- return [ " \( raw : accessor ) .bridgeJSLowerStackReturn() " ]
903- case . jsObject ( nil ) :
892+ case . string, . int, . uint, . bool, . float, . double, . jsValue,
893+ . jsObject ( nil ) , . swiftHeapObject , . unsafePointer , . closure ,
894+ . caseEnum , . rawValueEnum :
904895 return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
905896 case . jsObject( _? ) :
906897 return [ " \( raw: accessor) .jsObject.bridgeJSLowerStackReturn() " ]
907- case . swiftHeapObject, . unsafePointer, . closure:
908- return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
909- case . swiftProtocol( let protocolName) :
910- let wrapperName = " Any \( protocolName) "
911- return [ " ( \( raw: accessor) as! \( raw: wrapperName) ).bridgeJSLowerStackReturn() " ]
912- case . caseEnum, . rawValueEnum:
913- return [ " \( raw: accessor) .bridgeJSLowerStackReturn() " ]
898+ case . swiftProtocol:
899+ return [ " ( \( raw: accessor) as! \( raw: type. swiftType) ).bridgeJSLowerStackReturn() " ]
914900 case . associatedValueEnum, . swiftStruct:
915901 return [ " \( raw: accessor) .bridgeJSLowerReturn() " ]
916902 case . nullable( let wrappedType, _) :
@@ -932,8 +918,8 @@ struct StackCodegen {
932918 switch elementType {
933919 case . jsObject( let className? ) where className != " JSObject " :
934920 return [ " \( raw: accessor) .map { $0.jsObject }.bridgeJSLowerReturn() " ]
935- case . swiftProtocol( let protocolName ) :
936- return [ " \( raw: accessor) .map { $0 as! Any \( raw: protocolName ) }.bridgeJSLowerReturn() " ]
921+ case . swiftProtocol:
922+ return [ " \( raw: accessor) .map { $0 as! \( raw: elementType . swiftType ) }.bridgeJSLowerReturn() " ]
937923 case . nullable, . closure:
938924 return lowerArrayStatementsInline (
939925 elementType: elementType,
@@ -979,8 +965,8 @@ struct StackCodegen {
979965 switch valueType {
980966 case . jsObject( let className? ) where className != " JSObject " :
981967 return [ " \( raw: accessor) .mapValues { $0.jsObject }.bridgeJSLowerReturn() " ]
982- case . swiftProtocol( let protocolName ) :
983- return [ " \( raw: accessor) .mapValues { $0 as! Any \( raw: protocolName ) }.bridgeJSLowerReturn() " ]
968+ case . swiftProtocol:
969+ return [ " \( raw: accessor) .mapValues { $0 as! \( raw: valueType . swiftType ) }.bridgeJSLowerReturn() " ]
984970 case . nullable, . closure:
985971 return lowerDictionaryStatementsInline (
986972 valueType: valueType,
0 commit comments