diff --git a/src/apatheia/macroutils.nim b/src/apatheia/macroutils.nim index 25af953..f8e40e6 100644 --- a/src/apatheia/macroutils.nim +++ b/src/apatheia/macroutils.nim @@ -129,3 +129,11 @@ proc mkCall*(callName, params: NimNode): NimNode = argList.add paramId result = newCall(callName, argList) # echo "mkCall return:\n", treeRepr result + +proc mkProc*(name, params, body: NimNode): NimNode = + let params = params.copyNimTree() + result = quote do: + proc `name`() {.nimcall.} = + `body` + for param in params: + result[3].add param diff --git a/src/apatheia/tasks.nim b/src/apatheia/tasks.nim index 4672dcb..5b267a3 100644 --- a/src/apatheia/tasks.nim +++ b/src/apatheia/tasks.nim @@ -33,9 +33,12 @@ macro asyncTask*(p: untyped): untyped = checks.add newCall("checkParamType", paramId) echo "asyncTask:checks:\n", checks.repr + echo "asyncTask:mkProc:\n", repr mkProc(ident "tester", params, body) + result = p echo "asyncTask:body:\n", result.repr + type HashOptions* = object striped*: bool