diff options
Diffstat (limited to 'tests/effects/tgcsafe.nim')
-rw-r--r-- | tests/effects/tgcsafe.nim | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/effects/tgcsafe.nim b/tests/effects/tgcsafe.nim new file mode 100644 index 000000000..cfac3ddd8 --- /dev/null +++ b/tests/effects/tgcsafe.nim @@ -0,0 +1,26 @@ +discard """ + errormsg: "'mainUnsafe' is not GC-safe as it performs an indirect call here" + line: 26 + cmd: "nim $target --hints:on --threads:on $options $file" +""" + +# bug #6955 +var global_proc: proc(a: string): int {.nimcall.} = nil + +proc myproc(i: int) {.gcsafe.} = + if global_proc != nil: + echo "a" + if isNil(global_proc): + return + +proc mymap(x: proc ()) {.effectsOf: x.} = + x() + +var + myglob: string + +proc mainSafe() {.gcsafe.} = + mymap(proc () = echo "foo") + +proc mainUnsafe() {.gcsafe.} = + mymap(proc () = myglob = "bar"; echo "foo", myglob) |