@@ -68,8 +68,8 @@ public String compose(String packageName, String javaName, Map<Library, List<Fun
6868 var options = functionNode .functionOptions ();
6969 var returnNode = functionNode .returnNode ();
7070 var returnType = returnNode .getType ();
71- if (! returnType . carrierClass ().equals ( void .class ) ) {
72- switch (returnType ) {
71+ if (options . nativeReturnType ().carrierClass () != Void .class ) {
72+ switch (options . nativeReturnType () ) {
7373 case PrimitiveOriginalType primitiveTypeMapping ->
7474 parameters .add (CodeBlock .builder ().add ("$T.$L" , ValueLayout .class , primitiveTypeMapping .valueLayoutName ()).build ());
7575 case ObjectOriginalType _ , ArrayOriginalType _ -> {
@@ -81,6 +81,21 @@ public String compose(String packageName, String javaName, Map<Library, List<Fun
8181 }
8282 default -> throw new IllegalStateException ("Unexpected value: " + returnType );
8383 }
84+ } else {
85+ if (!returnType .carrierClass ().equals (void .class )) {
86+ switch (returnType ) {
87+ case PrimitiveOriginalType primitiveTypeMapping ->
88+ parameters .add (CodeBlock .builder ().add ("$T.$L" , ValueLayout .class , primitiveTypeMapping .valueLayoutName ()).build ());
89+ case ObjectOriginalType _ , ArrayOriginalType _ -> {
90+ if (returnNode .getNodeType ().isEnum ()) {
91+ parameters .add (CodeBlock .builder ().add ("$T.JAVA_INT" , ValueLayout .class ).build ());
92+ } else {
93+ parameters .add (CodeBlock .builder ().add ("$T.ADDRESS" , ValueLayout .class ).build ());
94+ }
95+ }
96+ default -> throw new IllegalStateException ("Unexpected value: " + returnType );
97+ }
98+ }
8499 }
85100 for (ParameterNode parameterNode : functionNode .functionParameters ()) {
86101 var node = parameterNode .nativeMemoryNode ();
0 commit comments