diff options
Diffstat (limited to 'tests/closure/tnestedclosure.nim')
-rw-r--r-- | tests/closure/tnestedclosure.nim | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/tests/closure/tnestedclosure.nim b/tests/closure/tnestedclosure.nim new file mode 100644 index 000000000..c8f1e231b --- /dev/null +++ b/tests/closure/tnestedclosure.nim @@ -0,0 +1,51 @@ +discard """ + output: '''foo88 +23 24foo 88 +foo88 +23 24foo 88 +hohoho''' +""" + +# test nested closure +proc main(param: int) = + var foo = 23 + proc outer(outerParam: string) = + var outerVar = 88 + echo outerParam, outerVar + proc inner() = + block Test: + echo foo, " ", param, outerParam, " ", outerVar + inner() + outer("foo") + +# test simple closure within dummy 'main': +proc dummy = + proc main2(param: int) = + var foo = 23 + proc outer(outerParam: string) = + var outerVar = 88 + echo outerParam, outerVar + proc inner() = + block Test: + echo foo, " ", param, outerParam, " ", outerVar + inner() + outer("foo") + main2(24) + +dummy() + +main(24) + +# Jester + async triggered this bug: +proc cbOuter() = + var response = "hohoho" + block: + proc cbIter() = + block: + proc fooIter() = + echo response + fooIter() + + cbIter() + +cbOuter() |