From 014658d1e4963fb9e8eb9e45e6c0e9a576111213 Mon Sep 17 00:00:00 2001 From: jangko Date: Thu, 4 Jan 2024 11:17:31 +0700 Subject: [PATCH] Fix optional parameter parsing fails in rpc macro with generics --- json_rpc/private/server_handler_wrapper.nim | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/json_rpc/private/server_handler_wrapper.nim b/json_rpc/private/server_handler_wrapper.nim index c58f981..660984e 100644 --- a/json_rpc/private/server_handler_wrapper.nim +++ b/json_rpc/private/server_handler_wrapper.nim @@ -51,9 +51,16 @@ iterator paramsRevIter(params: NimNode): tuple[name, ntype: NimNode] = yield (arg[j], argType) proc isOptionalArg(typeNode: NimNode): bool = - typeNode.kind == nnkBracketExpr and + # typed version + (typeNode.kind == nnkCall and + typeNode.len > 1 and + typeNode[1].kind in {nnkIdent, nnkSym} and + typeNode[1].strVal == "Option") or + + # untyped version + (typeNode.kind == nnkBracketExpr and typeNode[0].kind == nnkIdent and - typeNode[0].strVal == "Option" + typeNode[0].strVal == "Option") proc expectOptionalArrayLen(node: NimNode, parameters: NimNode,