From 44b64e726ec4aa9076d2d69e88c5d593131f8ee3 Mon Sep 17 00:00:00 2001 From: Jake Leahy Date: Wed, 6 Dec 2023 14:59:38 +1100 Subject: [PATCH] Don't recurse into inner functions during asyncjs transform (#23036) Closes #13341 --- lib/js/asyncjs.nim | 2 ++ tests/js/tasyncjs.nim | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/lib/js/asyncjs.nim b/lib/js/asyncjs.nim index 8e2f85156b..045d1e6b56 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 3de1436431..f3b273c447 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()