diff options
author | Jake Leahy <jake@leahy.dev> | 2023-12-06 14:59:38 +1100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-06 04:59:38 +0100 |
commit | 44b64e726ec4aa9076d2d69e88c5d593131f8ee3 (patch) | |
tree | b6654c4645b5bcab0ab02fe9b93b8dfdd17da286 | |
parent | d20b4d5168780b9c6a3bd2fde28b171cb7414c98 (diff) | |
download | Nim-44b64e726ec4aa9076d2d69e88c5d593131f8ee3.tar.gz |
Don't recurse into inner functions during asyncjs transform (#23036)
Closes #13341
-rw-r--r-- | lib/js/asyncjs.nim | 2 | ||||
-rw-r--r-- | tests/js/tasyncjs.nim | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/js/asyncjs.nim b/lib/js/asyncjs.nim index 8e2f85156..045d1e6b5 100644 --- a/lib/js/asyncjs.nim +++ b/lib/js/asyncjs.nim @@ -90,6 +90,8 @@ proc replaceReturn(node: var NimNode) = node[z] = nnkReturnStmt.newTree(value) elif son.kind == nnkAsgn and son[0].kind == nnkIdent and $son[0] == "result": node[z] = nnkAsgn.newTree(son[0], nnkCall.newTree(jsResolve, son[1])) + elif son.kind in RoutineNodes: + discard else: replaceReturn(son) inc z diff --git a/tests/js/tasyncjs.nim b/tests/js/tasyncjs.nim index 3de143643..f3b273c44 100644 --- a/tests/js/tasyncjs.nim +++ b/tests/js/tasyncjs.nim @@ -99,4 +99,9 @@ block asyncPragmaInType: proc foo() {.async.} = discard var x: Handler = foo +block: # 13341 + proc f {.async.} = + proc g: int = + result = 123 + discard main() |