diff options
Diffstat (limited to 'tests/errmsgs/tgcsafety.nim')
-rw-r--r-- | tests/errmsgs/tgcsafety.nim | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/errmsgs/tgcsafety.nim b/tests/errmsgs/tgcsafety.nim new file mode 100644 index 000000000..66496d364 --- /dev/null +++ b/tests/errmsgs/tgcsafety.nim @@ -0,0 +1,32 @@ +discard """ +cmd: "nim check $file" +errormsg: "type mismatch: got <AsyncHttpServer, Port, proc (req: Request): Future[system.void]>" +nimout: ''' +tgcsafety.nim(31, 18) Error: type mismatch: got <AsyncHttpServer, Port, proc (req: Request): Future[system.void]> +but expected one of: +proc serve(server: AsyncHttpServer; port: Port; + callback: proc (request: Request): Future[void] {.closure, gcsafe.}; + address = ""; assumedDescriptorsPerRequest = -1; domain = AF_INET): owned( + Future[void]) + first type mismatch at position: 3 + required type for callback: proc (request: Request): Future[system.void]{.closure, gcsafe.} + but expression 'cb' is of type: proc (req: Request): Future[system.void] + This expression is not GC-safe. Annotate the proc with {.gcsafe.} to get extended error information. + +expression: serve(server, Port(7898), cb) +''' +""" + +# bug #6186 + +import asyncdispatch, asynchttpserver + +var server = newAsyncHttpServer() + +var foo = "foo" +proc cb(req: Request) {.async.} = + var baa = foo & "asds" + await req.respond(Http200, baa) + +asyncCheck server.serve(Port(7898), cb ) +runForever() |