@@ -383,7 +383,7 @@ extension JNISwift2JavaGenerator {
383383 javaType: javaType,
384384 annotations: resultAnnotations,
385385 outParameters: [ ] ,
386- conversion: . constructSwiftValue ( . placeholder, javaType)
386+ conversion: . wrapMemoryAddressUnsafe ( . placeholder, javaType)
387387 )
388388
389389 case . tuple( [ ] ) :
@@ -465,7 +465,7 @@ extension JNISwift2JavaGenerator {
465465 discriminatorName: " result_discriminator$ " ,
466466 optionalClass: " Optional " ,
467467 javaType: . long,
468- toValue: . constructSwiftValue ( . placeholder, . class( package : nil , name: nominalTypeName) )
468+ toValue: . wrapMemoryAddressUnsafe ( . placeholder, . class( package : nil , name: nominalTypeName) )
469469 )
470470 )
471471
@@ -582,6 +582,9 @@ extension JNISwift2JavaGenerator {
582582 /// Call `new \(Type)(\(placeholder), swiftArena$)`
583583 indirect case constructSwiftValue( JavaNativeConversionStep , JavaType )
584584
585+ /// Call the `MyType.wrapMemoryAddressUnsafe` in order to wrap a memory address using the Java binding type
586+ indirect case wrapMemoryAddressUnsafe( JavaNativeConversionStep , JavaType )
587+
585588 indirect case call( JavaNativeConversionStep , function: String )
586589
587590 indirect case method( JavaNativeConversionStep , function: String , arguments: [ JavaNativeConversionStep ] = [ ] )
@@ -641,6 +644,10 @@ extension JNISwift2JavaGenerator {
641644 case . constructSwiftValue( let inner, let javaType) :
642645 let inner = inner. render ( & printer, placeholder)
643646 return " new \( javaType. className!) ( \( inner) , swiftArena$) "
647+
648+ case . wrapMemoryAddressUnsafe( let inner, let javaType) :
649+ let inner = inner. render ( & printer, placeholder)
650+ return " \( javaType. className!) .wrapMemoryAddressUnsafe( \( inner) , swiftArena$) "
644651
645652 case . call( let inner, let function) :
646653 let inner = inner. render ( & printer, placeholder)
@@ -705,7 +712,7 @@ extension JNISwift2JavaGenerator {
705712 case . placeholder, . constant, . isOptionalPresent:
706713 return false
707714
708- case . constructSwiftValue:
715+ case . constructSwiftValue, . wrapMemoryAddressUnsafe :
709716 return true
710717
711718 case . valueMemoryAddress( let inner) :
0 commit comments