Skip to content

Commit eb82b81

Browse files
committed
Add args
1 parent d1c2443 commit eb82b81

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

Sources/Java2SwiftLib/JavaClassTranslator.swift

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)