12345678910111213141516171819202122232425262728293031 |
- discard """
- cmd: "nim c --threads:on $file"
- file: "asyncmacro.nim"
- errormsg: "'anotherGCSafeAsyncProcIter' is not GC-safe as it calls 'asyncGCUnsafeProc'"
- """
- assert compileOption("threads"), "this test will not do anything useful without --threads:on"
- import asyncdispatch
- var globalDummy: ref int
- proc gcUnsafeProc() =
- if not globalDummy.isNil:
- echo globalDummy[]
- proc asyncExplicitlyGCSafeProc() {.gcsafe, async.} =
- echo "hi"
- proc asyncImplicitlyGCSafeProc() {.async.} =
- echo "hi"
- proc asyncGCUnsafeProc() {.async.} =
- gcUnsafeProc()
- proc anotherGCSafeAsyncProc() {.async, gcsafe.} =
- # We should be able to call other gcsafe procs
- await asyncExplicitlyGCSafeProc()
- await asyncImplicitlyGCSafeProc()
- # But we can't call gcunsafe procs
- await asyncGCUnsafeProc()
|