summary refs log tree commit diff stats
path: root/tests/closure/tnested.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/closure/tnested.nim')
-rw-r--r--tests/closure/tnested.nim36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/closure/tnested.nim b/tests/closure/tnested.nim
index dbbe9ba58..ec5af9b13 100644
--- a/tests/closure/tnested.nim
+++ b/tests/closure/tnested.nim
@@ -1,4 +1,5 @@
 discard """
+targets: "c js"
 output: '''
 foo88
 23 24foo 88
@@ -33,6 +34,7 @@ py
 py
 px
 6
+proc (){.closure, noSideEffect, gcsafe.}
 '''
 """
 
@@ -177,3 +179,37 @@ block tclosure2:
 
 
     outer2()
+
+# bug #5688
+
+import typetraits
+
+block:
+  proc myDiscard[T](a: T) = discard
+
+  proc foo() =
+    let a = 5
+    let f = (proc() =
+              myDiscard (proc() = echo a)
+            )
+    echo name(typeof(f))
+
+  foo()
+
+
+block:
+  iterator foo: int {.closure.} =
+    yield 1
+    yield 2
+    yield 3
+
+  proc pork =
+    let call = foo
+    for i in call():
+      discard i
+
+    let call2 = foo
+    while not finished(call2):
+      discard call2()
+
+  pork()