@@ -824,16 +824,12 @@ struct StackCodegen {
824824 switch type {
825825 case . string , . int , . uint , . bool , . float , . double , . jsValue ,
826826 . jsObject ( nil ) , . swiftHeapObject , . unsafePointer , . closure ,
827- . caseEnum , . rawValueEnum :
827+ . caseEnum , . rawValueEnum , . associatedValueEnum , . swiftStruct , . nullable :
828828 return [ " \( raw : accessor ) .bridgeJSStackPush() " ]
829829 case . jsObject ( _? ) :
830830 return [ " \( raw : accessor ) .jsObject.bridgeJSStackPush() " ]
831831 case . swiftProtocol :
832832 return [ " ( \( raw : accessor ) as! \( raw : type . swiftType ) ).bridgeJSStackPush() " ]
833- case . associatedValueEnum , . swiftStruct :
834- return [ " \( raw : accessor ) .bridgeJSStackPush() " ]
835- case . nullable ( let wrappedType , _) :
836- return lowerOptionalStatements ( wrappedType : wrappedType , accessor : accessor , varPrefix : varPrefix )
837833 case . void , . namespaceEnum :
838834 return [ ]
839835 case . array ( let elementType ) :
@@ -946,54 +942,6 @@ struct StackCodegen {
946942 statements . append ( " _swift_js_push_i32(Int32( \( raw : accessor ) .count)) " )
947943 return statements
948944 }
949-
950- private func lowerOptionalStatements (
951- wrappedType : BridgeType ,
952- accessor : String ,
953- varPrefix : String
954- ) -> [ CodeBlockItemSyntax ] {
955- switch wrappedType {
956- case . array , . dictionary , . swiftStruct :
957- return [ " \( raw : accessor ) .bridgeJSStackPush() " ]
958- default :
959- break
960- }
961-
962- var statements : [ String ] = [ ]
963- statements . append ( " let __bjs_isSome_ \( varPrefix ) = \( accessor ) != nil " )
964- statements . append ( " if let __bjs_unwrapped_ \( varPrefix ) = \( accessor ) { " )
965-
966- let innerStatements = lowerUnwrappedOptionalStatements (
967- wrappedType : wrappedType ,
968- unwrappedVar : " __bjs_unwrapped_ \( varPrefix ) "
969- )
970- for stmt in innerStatements {
971- statements . append ( stmt . description )
972- }
973-
974- statements . append ( " } " )
975- statements . append ( " _swift_js_push_i32(__bjs_isSome_ \( varPrefix ) ? 1 : 0) " )
976- let parsed : CodeBlockItemListSyntax = " \( raw : statements . joined ( separator : " \n " ) ) "
977- return Array ( parsed )
978- }
979-
980- private func lowerUnwrappedOptionalStatements (
981- wrappedType : BridgeType ,
982- unwrappedVar : String
983- ) -> [ CodeBlockItemSyntax ] {
984- switch wrappedType {
985- case . jsObject ( _? ) :
986- return [ " \( raw : unwrappedVar ) .jsObject.bridgeJSStackPush() " ]
987- case . swiftProtocol :
988- return [ " ( \( raw : unwrappedVar ) as! \( raw : wrappedType . swiftType ) ).bridgeJSStackPush() " ]
989- case . string , . int , . uint , . bool , . float , . double , . jsValue ,
990- . jsObject ( nil ) , . swiftHeapObject , . unsafePointer , . closure ,
991- . caseEnum , . rawValueEnum , . associatedValueEnum :
992- return [ " \( raw : unwrappedVar ) .bridgeJSStackPush() " ]
993- default :
994- return [ " preconditionFailure( \" BridgeJS: unsupported optional wrapped type \" ) " ]
995- }
996- }
997945}
998946
999947// MARK: - EnumCodegen
0 commit comments