@@ -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