Merge pull request #7289 from alehander42/fix-asyncjs-pragma
Stop replacing all pragmas of a function with asyncjs
This commit is contained in:
commit
363c703e72
2 changed files with 29 additions and 1 deletions
|
|
@ -129,9 +129,10 @@ proc generateJsasync(arg: NimNode): NimNode =
|
||||||
return `jsResolve`
|
return `jsResolve`
|
||||||
result.body.add(voidFix)
|
result.body.add(voidFix)
|
||||||
|
|
||||||
result.pragma = quote:
|
let asyncPragma = quote:
|
||||||
{.codegenDecl: "async function $2($3)".}
|
{.codegenDecl: "async function $2($3)".}
|
||||||
|
|
||||||
|
result.addPragma(asyncPragma[0])
|
||||||
|
|
||||||
macro async*(arg: untyped): untyped =
|
macro async*(arg: untyped): untyped =
|
||||||
## Macro which converts normal procedures into
|
## Macro which converts normal procedures into
|
||||||
|
|
|
||||||
27
tests/js/tasync_pragma.nim
Normal file
27
tests/js/tasync_pragma.nim
Normal file
|
|
@ -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()
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue