From 4f4f138fb4538686f5c74d73acbd9e7915968c28 Mon Sep 17 00:00:00 2001 From: Zahary Karadjov Date: Thu, 18 Jul 2019 21:30:03 +0300 Subject: [PATCH] More capable alternative of unpackVarargs --- stew/shims/macros.nim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/stew/shims/macros.nim b/stew/shims/macros.nim index 28f63a6..aceaf00 100644 --- a/stew/shims/macros.nim +++ b/stew/shims/macros.nim @@ -253,3 +253,14 @@ iterator typedParams*(n: NimNode, skip = 0): (NimNode, NimNode) = for j in 0 ..< paramNodes.len - 2: yield (paramNodes[j], paramType) +macro unpackArgs*(callee: typed, args: untyped): untyped = + result = newCall(callee) + for arg in args: + let arg = if arg.kind == nnkHiddenStdConv: arg[1] + else: arg + if arg.kind == nnkArgList: + for subarg in arg: + result.add subarg + else: + result.add arg +