summary refs log tree commit diff stats
path: root/tests/errmsgs/tgcsafety.nim
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2018-02-11 14:52:19 +0100
committerAndreas Rumpf <rumpf_a@web.de>2018-02-11 14:52:26 +0100
commita4deceb13479c370f9d642e17facd92a1146a874 (patch)
tree4dad9f3718c3300eb217085071d185e76c5b8abc /tests/errmsgs/tgcsafety.nim
parent7847cd875924356178dd23dcbbe150f6b852faf5 (diff)
downloadNim-a4deceb13479c370f9d642e17facd92a1146a874.tar.gz
fixes #6186
Diffstat (limited to 'tests/errmsgs/tgcsafety.nim')
-rw-r--r--tests/errmsgs/tgcsafety.nim30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/errmsgs/tgcsafety.nim b/tests/errmsgs/tgcsafety.nim
new file mode 100644
index 000000000..4d192db90
--- /dev/null
+++ b/tests/errmsgs/tgcsafety.nim
@@ -0,0 +1,30 @@
+discard """
+cmd: "nim check $file"
+errormsg: "type mismatch: got <AsyncHttpServer, Port, proc (req: Request): Future[system.void]{.locks: <unknown>.}>"
+nimout: '''
+type mismatch: got <AsyncHttpServer, Port, proc (req: Request): Future[system.void]{.locks: <unknown>.}>
+but expected one of:
+proc serve(server: AsyncHttpServer; port: Port;
+          callback: proc (request: Request): Future[void]; address = ""): Future[void]
+  first type mismatch at position: 3
+  required type: proc (request: Request): Future[system.void]{.closure, gcsafe.}
+  but expression 'cb' is of type: proc (req: Request): Future[system.void]{.locks: <unknown>.}
+  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()