Merge branch 'devel' into araq-fixes-6960

This commit is contained in:
Araq 2018-02-12 18:55:41 +01:00
commit 4c702d5ab2
10 changed files with 191 additions and 111 deletions

View file

@ -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()

View file

@ -380,4 +380,11 @@ when isMainModule:
let dataDeser = to(dataParsed, Test1)
doAssert dataDeser.a == 1
doAssert dataDeser.f == 6
doAssert dataDeser.i == 9.9'f32
doAssert dataDeser.i == 9.9'f32
# deserialize directly into a table
block:
let s = """{"a": 1, "b": 2}"""
let t = parseJson(s).to(Table[string, int])
doAssert t["a"] == 1
doAssert t["b"] == 2