@@ -576,21 +576,41 @@ extension JavaClassTranslator {
576576 package func renderMethod(
577577 _ javaMethod: Method ,
578578 implementedInSwift: Bool ,
579- genericParameterClause: String = " " ,
579+ genericParameterClause __genericParameterClause : String = " " , // FIXME: why is this a string, fix this...
580580 whereClause: String = " "
581581 ) throws -> DeclSyntax {
582+ // Map the generic params on the method.
583+ let typeParameters = javaMethod. getTypeParameters ( )
584+ var genericParameterClauseStr = __genericParameterClause
585+ if typeParameters. count ( where: { $0 != nil } ) > 0 {
586+ genericParameterClauseStr = " < "
587+ genericParameterClauseStr += typeParameters. map { typeParam in
588+ // FIXME: determine if it is some other constraint
589+ " \( typeParam!. getTypeName ( ) ) : AnyJavaObject "
590+ } . joined ( separator: " , " )
591+ genericParameterClauseStr += " > "
592+ }
593+
582594 // Map the parameters.
583595 let parameters = try translateJavaParameters ( javaMethod. getParameters ( ) )
584596
585597 let parametersStr = parameters. map { $0. description } . joined ( separator: " , " )
586598
599+ print ( " javaMethod.getReturnType() == \( javaMethod. getReturnType ( ) ) " )
600+ print ( " javaMethod.getGenericReturnType() == \( javaMethod. getGenericReturnType ( ) ) " )
601+
587602 // Map the result type.
588603 let resultTypeStr : String
589- let resultType = try translator. getSwiftTypeNameAsString (
590- javaMethod. getGenericReturnType ( ) ! ,
591- preferValueTypes: true ,
604+ let resultType = try translator. getSwiftReturnTypeNameAsString (
605+ method : javaMethod,
606+ preferValueTypes: true ,
592607 outerOptional: . implicitlyUnwrappedOptional
593608 )
609+ // let resultType = try translator.getSwiftTypeNameAsString(
610+ // javaMethod.getGenericReturnType()!,
611+ // preferValueTypes: true,
612+ // outerOptional: .implicitlyUnwrappedOptional
613+ // )
594614
595615 // FIXME: cleanup the checking here
596616 if resultType != " Void " && resultType != " Swift.Void " {
@@ -632,15 +652,15 @@ extension JavaClassTranslator {
632652
633653
634654 return """
635- \( methodAttribute) \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) \( raw: genericParameterClause ) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
655+ \( methodAttribute) \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) \( raw: genericParameterClauseStr ) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
636656
637- \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) Optional \( raw: genericParameterClause ) ( \( raw: parameters. map ( \. clause. description) . joined ( separator: " , " ) ) ) \( raw: throwsStr) -> \( raw: resultOptional) \( raw: whereClause) {
657+ \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) Optional \( raw: genericParameterClauseStr ) ( \( raw: parameters. map ( \. clause. description) . joined ( separator: " , " ) ) ) \( raw: throwsStr) -> \( raw: resultOptional) \( raw: whereClause) {
638658 \( body)
639659 }
640660 """
641661 } else {
642662 return """
643- \( methodAttribute) \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) \( raw: genericParameterClause ) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
663+ \( methodAttribute) \( raw: accessModifier) \( raw: overrideOpt) func \( raw: swiftMethodName) \( raw: genericParameterClauseStr ) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
644664 """
645665 }
646666 }
0 commit comments