@@ -455,9 +455,11 @@ private List<String> generateTrpcMethod(boolean kt, TrpcMethod trpcMethod) {
455455 var buffer = new ArrayList <String >();
456456
457457 var returnTypeString =
458- "io.jooby.trpc.TrpcResponse<" + type (kt , getReturnType ().toString ()) + ">" ;
458+ "io.jooby.trpc.TrpcResponse<"
459+ + (returnType .isVoid () ? (kt ? "Unit" : "Void" ) : type (kt , returnType .toString ()))
460+ + ">" ;
459461
460- methodCallHeader (kt , "ctx" , trpcMethod .name , buffer , "" , returnTypeString , true );
462+ var nullable = methodCallHeader (kt , "ctx" , trpcMethod .name , buffer , "" , returnTypeString , true );
461463 var hasArgs = !parameters .isEmpty ();
462464 if (hasArgs ) {
463465 buffer .add (
@@ -476,7 +478,7 @@ private List<String> generateTrpcMethod(boolean kt, TrpcMethod trpcMethod) {
476478 "input = ctx.query(" ,
477479 string ("input" ),
478480 ")." ,
479- parameters . isEmpty () ? "valueOrNull" : "value" ,
481+ "value" ,
480482 "()" ,
481483 semicolon (kt )));
482484 if (kt ) {
@@ -503,8 +505,8 @@ private List<String> generateTrpcMethod(boolean kt, TrpcMethod trpcMethod) {
503505 buffer .add (
504506 statement (
505507 indent (2 ),
506- "if (input.size < 2 || input[0] != '['.toByte() || input[input.size - 1] !="
507- + " ']'.toByte()) throw IllegalArgumentException(" ,
508+ "if (input.size < 2 || input[0] != '['.code. toByte() || input[input.size - 1] !="
509+ + " ']'.code. toByte()) throw IllegalArgumentException(" ,
508510 string ("tRPC body must be a JSON array (tuple)" ),
509511 ")" ));
510512 } else {
@@ -533,30 +535,38 @@ private List<String> generateTrpcMethod(boolean kt, TrpcMethod trpcMethod) {
533535 buffer .addAll (argumentStatements );
534536 }
535537 controllerVar (kt , buffer , indent );
536- var cast = getReturnType ().getArgumentsString (kt , false , Set .of (TypeKind .TYPEVAR ));
537- var kotlinNotEnoughTypeInformation = !cast .isEmpty () && kt ? "<Any>" : "" ;
538538 var call =
539539 of (
540540 "c." ,
541541 this .method .getSimpleName (),
542- kotlinNotEnoughTypeInformation ,
542+ "" ,
543543 arguments .stream ().collect (Collectors .joining (", " , "(" , ")" )));
544- if (!cast .isEmpty ()) {
545- setUncheckedCast (true );
546- call = kt ? call + " as " + returnTypeString : "(" + returnTypeString + ") " + call ;
547- }
548544 if (isVoid ) {
549545 buffer .add (statement (indent (indent ), call , semicolon (kt )));
546+ buffer .add (
547+ statement (
548+ indent (indent ), "return " , "io.jooby.trpc.TrpcResponse.empty()" , semicolon (kt )));
550549 } else {
551- buffer .add (statement (indent (indent ), var (kt ), "result = " , call , semicolon (kt )));
550+ if (kt ) {
551+ var cast = !returnType .getArguments ().isEmpty ();
552+ buffer .add (
553+ statement (
554+ indent (indent ),
555+ "val result = " ,
556+ call ,
557+ cast ? " as " + type (true , returnType .toString ()) : "" ));
558+ buffer .add (
559+ statement (
560+ indent (indent ),
561+ "return " ,
562+ "io.jooby.trpc.TrpcResponse.of(result" ,
563+ nullable ? "!!" : "" ,
564+ ")" ));
565+ } else {
566+ buffer .add (statement (indent (indent ), "var result = " , call , ";" ));
567+ buffer .add (statement (indent (indent ), "return " , "io.jooby.trpc.TrpcResponse.of(result);" ));
568+ }
552569 }
553- buffer .add (
554- statement (
555- indent (indent ),
556- "return " ,
557- "io.jooby.trpc.TrpcResponse." ,
558- isVoid ? "empty()" : "of(result)" ,
559- semicolon (kt )));
560570 if (hasArgs ) {
561571 buffer .add (statement (indent (2 ), "}" ));
562572 }
@@ -569,11 +579,11 @@ private List<String> generateTrpcParameter(boolean kt, Consumer<String> argument
569579 var statements = new ArrayList <String >();
570580 for (var parameter : parameters ) {
571581 var paramenterName = parameter .getName ();
572- var type = parameter .getType ().getRawType (). toString ();
582+ var type = type ( kt , parameter .getType ().toString () );
573583
574584 boolean isNullable = parameter .isNullable (kt );
575585
576- switch (type ) {
586+ switch (parameter . getType (). getRawType (). toString () ) {
577587 case "io.jooby.Context" :
578588 {
579589 arguments .accept ("ctx" );
@@ -752,7 +762,7 @@ private List<String> generateTrpcParameter(boolean kt, Consumer<String> argument
752762 "val " ,
753763 paramenterName ,
754764 "Decoder: io.jooby.trpc.TrpcDecoder<" ,
755- parameter . getType (). toString () ,
765+ type ,
756766 "> = parser.decoder(" ,
757767 parameter .getType ().toSourceCode (kt ),
758768 ")" ,
@@ -788,7 +798,7 @@ private List<String> generateTrpcParameter(boolean kt, Consumer<String> argument
788798 statement (
789799 indent (4 ),
790800 "io.jooby.trpc.TrpcDecoder<" ,
791- parameter . getType (). toString () ,
801+ type ,
792802 "> " ,
793803 paramenterName ,
794804 "Decoder = parser.decoder(" ,
0 commit comments