@@ -568,14 +568,31 @@ extension JavaClassTranslator {
568568 ? " override "
569569 : " "
570570
571- if let resultOptional = resultType. optionalWrappedType ( ) {
572- let parameters = parameters. map { " \( $0. secondName!. trimmedDescription) " } . joined ( separator: " , " )
571+ if resultType. optionalWrappedType ( ) != nil || parameters. contains ( where: { $0. type. trimmedDescription. optionalWrappedType ( ) != nil } ) {
572+ let parameters = parameters. map { param -> ( clause: FunctionParameterSyntax , passedArg: String ) in
573+ let name = param. secondName!. trimmedDescription
574+
575+ return if let optionalType = param. type. trimmedDescription. optionalWrappedType ( ) {
576+ ( clause: FunctionParameterSyntax ( firstName: " _ " , secondName: " \( raw: name) " , type: TypeSyntax ( stringLiteral: " \( optionalType) " ) ) , passedArg: " \( name) ?.toJavaOptional() " )
577+ } else {
578+ ( clause: param, passedArg: " \( name) " )
579+ }
580+ }
581+
582+ let resultOptional : String = resultType. optionalWrappedType ( ) ?? resultType
583+ let baseBody : ExprSyntax = " Optional(javaOptional: \( raw: javaMethod. throwsCheckedException ? " try " : " " ) \( raw: swiftMethodName) ( \( raw: parameters. map ( \. passedArg) . joined ( separator: " , " ) ) )) "
584+ let body : ExprSyntax = if let optionalType = resultType. optionalWrappedType ( ) {
585+ " Optional(javaOptional: \( baseBody) ) "
586+ } else {
587+ baseBody
588+ }
589+
573590
574591 return """
575592 \( methodAttribute) \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) \( raw: genericParameterClause) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
576593
577- \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) Optional \( raw: genericParameterClause) ( \( raw: parametersStr ) ) \( raw: throwsStr) -> \( raw: resultOptional) \( raw: whereClause) {
578- Optional(javaOptional: \( raw : javaMethod . throwsCheckedException ? " try " : " " ) \( raw : swiftMethodName ) ( \( raw : parameters ) ) )
594+ \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) Optional \( raw: genericParameterClause) ( \( raw: parameters . map ( \ . clause . description ) . joined ( separator : " , " ) ) ) \( raw: throwsStr) -> \( raw: resultOptional) \( raw: whereClause) {
595+ \( body )
579596 }
580597 """
581598 } else {
0 commit comments