From 3bffbf5a4d499ed4c3dce9f70d1188b2fa838ed1 Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Sat, 3 Mar 2018 16:53:28 +0200 Subject: Stop replacing all pragmas of a function with asyncjs --- tests/js/tasync_pragma.nim | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 tests/js/tasync_pragma.nim (limited to 'tests') diff --git a/tests/js/tasync_pragma.nim b/tests/js/tasync_pragma.nim new file mode 100644 index 000000000..a16e94657 --- /dev/null +++ b/tests/js/tasync_pragma.nim @@ -0,0 +1,27 @@ +discard """ + output: ''' +0 +t +''' +""" + +import asyncjs, macros + +macro f*(a: untyped): untyped = + assert a.kind == nnkProcDef + result = nnkProcDef.newTree(a.name, a[1], a[2], a.params, a.pragma, a[5], nnkStmtList.newTree()) + let call = quote: + echo 0 + result.body.add(call) + for child in a.body: + result.body.add(child) + echo result.body.repr + +proc t* {.async, f.} = + echo "t" + +proc t0* {.async.} = + await t() + +discard t0() + -- cgit 1.4.1-2-gfad0 From b6c69dd45e9d06179de64bf47a6aea04521c500b Mon Sep 17 00:00:00 2001 From: Alexander Ivanov Date: Mon, 5 Mar 2018 10:28:17 +0200 Subject: Use addPragma --- lib/js/asyncjs.nim | 6 +----- tests/js/tasync_pragma.nim | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) (limited to 'tests') diff --git a/lib/js/asyncjs.nim b/lib/js/asyncjs.nim index 20f7b2300..894102ca0 100644 --- a/lib/js/asyncjs.nim +++ b/lib/js/asyncjs.nim @@ -131,12 +131,8 @@ proc generateJsasync(arg: NimNode): NimNode = let asyncPragma = quote: {.codegenDecl: "async function $2($3)".} - if arg.pragma.kind == nnkEmpty: - result.pragma = asyncPragma - else: - result.pragma = arg.pragma - result.pragma.add(asyncPragma[0]) + result.addPragma(asyncPragma[0]) macro async*(arg: untyped): untyped = ## Macro which converts normal procedures into diff --git a/tests/js/tasync_pragma.nim b/tests/js/tasync_pragma.nim index a16e94657..916769fad 100644 --- a/tests/js/tasync_pragma.nim +++ b/tests/js/tasync_pragma.nim @@ -15,7 +15,7 @@ macro f*(a: untyped): untyped = result.body.add(call) for child in a.body: result.body.add(child) - echo result.body.repr + #echo result.body.repr proc t* {.async, f.} = echo "t" -- cgit 1.4.1-2-gfad0