diff options
author | Bung <crc32@qq.com> | 2022-10-21 15:59:05 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-21 09:59:05 +0200 |
commit | 66cbcaab8474f5ff3480e7a9bc55df249548a90c (patch) | |
tree | cb71c9901faaff9b7f8297cafa82104827a21bd3 /tests/closure | |
parent | 84fab7f39bd89ef6e9c3e104a17af8d9f049d8e6 (diff) | |
download | Nim-66cbcaab8474f5ff3480e7a9bc55df249548a90c.tar.gz |
fix #20152 Illegal capture of closure iterator, when should be legal (#20607)
Diffstat (limited to 'tests/closure')
-rw-r--r-- | tests/closure/t20152.nim | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/closure/t20152.nim b/tests/closure/t20152.nim new file mode 100644 index 000000000..484ea0741 --- /dev/null +++ b/tests/closure/t20152.nim @@ -0,0 +1,20 @@ +discard """ + action: compile +""" + +proc foo() = + iterator it():int {.closure.} = + yield 1 + proc useIter() {.nimcall.} = + var iii = it # <-- illegal capture + doAssert iii() == 1 + useIter() +foo() + +proc foo2() = + proc bar() = # Local function, but not a closure, because no captures + echo "hi" + proc baz() {.nimcall.} = # Calls local function + bar() + baz() +foo2() |