mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-07 20:34:21 +00:00
Stop replacing all pragmas of a function with asyncjs
This commit is contained in:
@@ -129,8 +129,13 @@ proc generateJsasync(arg: NimNode): NimNode =
|
||||
return `jsResolve`
|
||||
result.body.add(voidFix)
|
||||
|
||||
result.pragma = quote:
|
||||
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])
|
||||
|
||||
|
||||
macro async*(arg: untyped): untyped =
|
||||
|
||||
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()
|
||||
|
||||
Reference in New Issue
Block a user