@@ -856,7 +856,7 @@ extension JNISwift2JavaGenerator {
856856 return TranslatedParameter (
857857 parameter: JavaParameter (
858858 name: parameterName,
859- type: . class ( package : nil , name : " Optional< \( javaType) > " ) ,
859+ type: . optional ( javaType) ,
860860 annotations: parameterAnnotations,
861861 ) ,
862862 conversion: . method(
@@ -876,7 +876,7 @@ extension JNISwift2JavaGenerator {
876876 return TranslatedParameter (
877877 parameter: JavaParameter (
878878 name: parameterName,
879- type: . class ( package : nil , name : " Optional " , typeParameters : [ javaType] ) ,
879+ type: . optional ( javaType) ,
880880 annotations: parameterAnnotations,
881881 ) ,
882882 conversion: . method(
@@ -904,46 +904,35 @@ extension JNISwift2JavaGenerator {
904904
905905 switch swiftType {
906906 case . nominal( let nominalType) :
907- if let knownType = nominalType. nominalTypeDecl . knownTypeKind {
907+ if let knownType = nominalType. asKnownType {
908908 switch knownType {
909- case . optional:
910- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 1 else {
911- throw JavaTranslationError . unsupportedSwiftType ( swiftType)
912- }
909+ case . optional( let wrapped) :
913910 return try translateOptionalResult (
914- wrappedType: genericArgs [ 0 ] ,
911+ wrappedType: wrapped,
912+ methodName: methodName,
915913 resultName: resultName,
916914 genericParameters: genericParameters,
917915 genericRequirements: genericRequirements,
918916 )
919917
920- case . array:
921- guard let elementType = nominalType. genericArguments? . first else {
922- throw JavaTranslationError . unsupportedSwiftType ( swiftType)
923- }
918+ case . array( let element) :
924919 return try translateArrayResult (
925- elementType: elementType ,
920+ elementType: element ,
926921 genericParameters: genericParameters,
927922 genericRequirements: genericRequirements,
928923 )
929924
930- case . dictionary:
931- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 2 else {
932- throw JavaTranslationError . dictionaryRequiresKeyAndValueTypes ( swiftType)
933- }
925+ case . dictionary( let key, let value) :
934926 return try translateDictionaryResult (
935- keyType: genericArgs [ 0 ] ,
936- valueType: genericArgs [ 1 ] ,
927+ keyType: key ,
928+ valueType: value ,
937929 genericParameters: genericParameters,
938930 genericRequirements: genericRequirements,
939931 )
940932
941- case . set:
942- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 1 else {
943- throw JavaTranslationError . setRequiresElementType ( swiftType)
944- }
933+ case . set( let element) :
945934 return try translateSetResult (
946- elementType: genericArgs [ 0 ] ,
935+ elementType: element ,
947936 genericParameters: genericParameters,
948937 genericRequirements: genericRequirements,
949938 )
@@ -968,7 +957,7 @@ extension JNISwift2JavaGenerator {
968957 )
969958
970959 default :
971- guard let javaType = JNIJavaTypeTranslator . translate ( knownType: knownType, config: self . config) else {
960+ guard let javaType = JNIJavaTypeTranslator . translate ( knownType: knownType. kind , config: self . config) else {
972961 throw JavaTranslationError . unsupportedSwiftType ( swiftType)
973962 }
974963
@@ -1046,52 +1035,40 @@ extension JNISwift2JavaGenerator {
10461035 case . nominal( let nominalType) :
10471036 let nominalTypeName = nominalType. nominalTypeDecl. qualifiedName
10481037
1049- if let knownType = nominalType. nominalTypeDecl . knownTypeKind {
1038+ if let knownType = nominalType. asKnownType {
10501039 switch knownType {
1051- case . optional:
1052- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 1 else {
1053- throw JavaTranslationError . unsupportedSwiftType ( swiftType)
1054- }
1040+ case . optional( let wrapped) :
10551041 let wrappedType = try translateGenericTypeParameter (
1056- genericArgs [ 0 ] ,
1042+ wrapped ,
10571043 genericParameters: genericParameters,
10581044 genericRequirements: genericRequirements,
10591045 )
1060- return . class ( package : " java.util " , name : " Optional " , typeParameters : [ wrappedType] )
1046+ return . optional ( wrappedType)
10611047
1062- case . array:
1063- guard let elementType = nominalType. genericArguments? . first else {
1064- throw JavaTranslationError . unsupportedSwiftType ( swiftType)
1065- }
1048+ case . array( let element) :
10661049 let elementJavaType = try translateGenericTypeParameter (
1067- elementType ,
1050+ element ,
10681051 genericParameters: genericParameters,
10691052 genericRequirements: genericRequirements,
10701053 )
10711054 return . array( elementJavaType)
10721055
1073- case . dictionary:
1074- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 2 else {
1075- throw JavaTranslationError . dictionaryRequiresKeyAndValueTypes ( swiftType)
1076- }
1056+ case . dictionary( let key, let value) :
10771057 let keyJavaType = try translateGenericTypeParameter (
1078- genericArgs [ 0 ] ,
1058+ key ,
10791059 genericParameters: genericParameters,
10801060 genericRequirements: genericRequirements,
10811061 )
10821062 let valueJavaType = try translateGenericTypeParameter (
1083- genericArgs [ 1 ] ,
1063+ value ,
10841064 genericParameters: genericParameters,
10851065 genericRequirements: genericRequirements,
10861066 )
10871067 return . swiftDictionaryMap( keyJavaType, valueJavaType)
10881068
1089- case . set:
1090- guard let genericArgs = nominalType. genericArguments, genericArgs. count == 1 else {
1091- throw JavaTranslationError . setRequiresElementType ( swiftType)
1092- }
1069+ case . set( let element) :
10931070 let elementJavaType = try translateGenericTypeParameter (
1094- genericArgs [ 0 ] ,
1071+ element ,
10951072 genericParameters: genericParameters,
10961073 genericRequirements: genericRequirements,
10971074 )
@@ -1110,7 +1087,7 @@ extension JNISwift2JavaGenerator {
11101087 return . javaUtilUUID
11111088
11121089 default :
1113- guard let javaType = JNIJavaTypeTranslator . translate ( knownType: knownType, config: self . config) else {
1090+ guard let javaType = JNIJavaTypeTranslator . translate ( knownType: knownType. kind , config: self . config) else {
11141091 throw JavaTranslationError . unsupportedSwiftType ( swiftType)
11151092 }
11161093 return javaType. boxedType
@@ -1259,6 +1236,7 @@ extension JNISwift2JavaGenerator {
12591236
12601237 func translateOptionalResult(
12611238 wrappedType swiftType: SwiftType,
1239+ methodName: String,
12621240 resultName: String,
12631241 genericParameters: [ SwiftGenericParameterDeclaration] ,
12641242 genericRequirements: [ SwiftGenericRequirement] ,
@@ -1338,7 +1316,7 @@ extension JNISwift2JavaGenerator {
13381316
13391317 let wrappedValueResult = try translate (
13401318 swiftResult: SwiftResult ( convention: . direct, type: swiftType) ,
1341- methodName: " " ,
1319+ methodName: methodName ,
13421320 resultName: resultName + " Wrapped$ " ,
13431321 genericParameters: genericParameters,
13441322 genericRequirements: genericRequirements,
@@ -1352,7 +1330,7 @@ extension JNISwift2JavaGenerator {
13521330 . void
13531331 }
13541332
1355- let returnType = JavaType . class ( package : nil , name : " Optional " , typeParameters : [ javaType] )
1333+ let returnType = JavaType . optional ( javaType)
13561334 return TranslatedResult (
13571335 javaType: returnType,
13581336 annotations: parameterAnnotations,
0 commit comments