summary refs log tree commit diff stats
path: root/tests/closure
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2018-10-03 00:00:19 +0200
committerAraq <rumpf_a@web.de>2018-10-03 00:00:19 +0200
commitc92fdb24c8bf78846d26d5488c9e33656ff93e34 (patch)
tree32d777aa7c6cfbfc21e8de1a2e46df9ec382d6a5 /tests/closure
parentbf8595580227ece7cd8a28365d2147229acff4b9 (diff)
downloadNim-c92fdb24c8bf78846d26d5488c9e33656ff93e34.tar.gz
fixes #5015
Diffstat (limited to 'tests/closure')
-rw-r--r--tests/closure/tclosure.nim19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/closure/tclosure.nim b/tests/closure/tclosure.nim
index 09d48436e..f4364c24a 100644
--- a/tests/closure/tclosure.nim
+++ b/tests/closure/tclosure.nim
@@ -1,6 +1,6 @@
 discard """
   file: "tclosure.nim"
-  output: "1 3 6 11 20"
+  output: '''1 3 6 11 20 foo'''
 """
 # Test the closure implementation
 
@@ -45,3 +45,20 @@ proc getInterf(): ITest =
   return (setter: proc (x: int) = shared = x,
           getter: proc (): int = return shared)
 
+
+# bug #5015
+
+type Mutator* = proc(matched: string): string {.noSideEffect, gcsafe, locks: 0.}
+
+proc putMutated*(
+    MutatorCount: static[int],
+    mTable: static[array[MutatorCount, Mutator]], input: string) =
+  for i in 0..<MutatorCount: echo mTable[i](input)
+
+proc mutator0(matched: string): string =
+    "foo"
+
+const
+  mTable = [Mutator(mutator0)]
+
+putMutated(1, mTable, "foo")