summary refs log tree commit diff stats
path: root/tests/errmsgs/tgcsafety.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/errmsgs/tgcsafety.nim')
-rw-r--r--tests/errmsgs/tgcsafety.nim32
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()