@@ -619,11 +619,22 @@ extension JNISwift2JavaGenerator {
619619 throw JavaTranslationError . unsupportedSwiftType ( swiftResult . type )
620620 }
621621
622- return NativeResult (
623- javaType : javaType ,
624- conversion : . getJNIValue ( . placeholder ) ,
625- outParameters : [ ]
626- )
622+ if let indirectReturnType = JNIJavaTypeTranslator . indirectConversionStepSwiftType (
623+ for : knownType ,
624+ from : knownTypes
625+ ) {
626+ return NativeResult (
627+ javaType : javaType ,
628+ conversion : . getJNIValue ( . labelessInitializer ( . placeholder , swiftType : indirectReturnType ) ) ,
629+ outParameters : [ ]
630+ )
631+ } else {
632+ return NativeResult (
633+ javaType : javaType ,
634+ conversion : . getJNIValue ( . placeholder ) ,
635+ outParameters : [ ]
636+ )
637+ }
627638 }
628639 }
629640
@@ -902,6 +913,9 @@ extension JNISwift2JavaGenerator {
902913
903914 indirect case replacingPlaceholder ( NativeSwiftConversionStep , placeholder : NativeSwiftConversionStep )
904915
916+ /// `SwiftType(inner)`
917+ indirect case labelessInitializer ( NativeSwiftConversionStep , swiftType : SwiftType )
918+
905919 /// Returns the conversion string applied to the placeholder.
906920 func render ( _ printer : inout CodePrinter , _ placeholder : String ) -> String {
907921 // NOTE: 'printer' is used if the conversion wants to cause side-effects.
@@ -1396,6 +1410,10 @@ extension JNISwift2JavaGenerator {
13961410 case . replacingPlaceholder ( let inner , let newPlaceholder ) :
13971411 let newPlaceholder = newPlaceholder . render ( & printer , placeholder )
13981412 return inner . render ( & printer , newPlaceholder )
1413+
1414+ case . labelessInitializer ( let inner , let swiftType ) :
1415+ let inner = inner . render ( & printer , placeholder )
1416+ return " \( swiftType ) ( \( inner ) ) "
13991417 }
14001418 }
14011419 }
0 commit comments