summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJake Leahy <jake@leahy.dev>2023-12-06 14:59:38 +1100
committerGitHub <noreply@github.com>2023-12-06 04:59:38 +0100
commit44b64e726ec4aa9076d2d69e88c5d593131f8ee3 (patch)
treeb6654c4645b5bcab0ab02fe9b93b8dfdd17da286
parentd20b4d5168780b9c6a3bd2fde28b171cb7414c98 (diff)
downloadNim-44b64e726ec4aa9076d2d69e88c5d593131f8ee3.tar.gz
Don't recurse into inner functions during asyncjs transform (#23036)
Closes #13341
-rw-r--r--lib/js/asyncjs.nim2
-rw-r--r--tests/js/tasyncjs.nim5
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()
-03-09 02:56:27 -0800 committer Kartik K. Agaram <vc@akkartik.com> 2016-03-09 02:56:27 -0800 2743' href='/akkartik/mu/commit/html/console.mu.html?h=main&id=4690ce81e079fc58cae8d6d583e5e3eb3ed81a83'>4690ce81 ^
a654e4ec ^


dbe12410 ^

a654e4ec ^





dbe12410 ^

a654e4ec ^
dbe12410 ^
f5465e12 ^
dbe12410 ^

4690ce81 ^
dcc060c7 ^
dbe12410 ^
f5465e12 ^
0e4a335e ^
f5465e12 ^



dbe12410 ^
f5465e12 ^
dbe12410 ^



a654e4ec ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52