diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2018-09-22 20:18:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-22 20:18:13 +0200 |
commit | a2587aad0d327f91600fee22399c2e53e9a923cf (patch) | |
tree | b2a756263fc1d3d63a8529cc9825a378282e1245 /tests | |
parent | b2b9af6a5083203d37ec3379d841ec8dc08e6674 (diff) | |
parent | 75a981cf80cb9f4cdff83a6ff525f6428b3ab5f1 (diff) | |
download | Nim-a2587aad0d327f91600fee22399c2e53e9a923cf.tar.gz |
Merge pull request #9035 from LemonBoy/fix-3075
Skip nested procedures in .async. macro
Diffstat (limited to 'tests')
-rw-r--r-- | tests/async/t3075.nim | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/async/t3075.nim b/tests/async/t3075.nim new file mode 100644 index 000000000..d26aa0a36 --- /dev/null +++ b/tests/async/t3075.nim @@ -0,0 +1,29 @@ +import asyncnet, asyncdispatch, strtabs + +type + WebSocketCallback = proc (client: WebSocket, message: WebSocketMessage) {.closure, gcsafe.} + WebSocketRecvClosure = proc (ws: WebSocket): Future[string] {.gcsafe.} + + WebSocketMessage = ref object + msg: string + + WebSocket = ref object + socket: AsyncSocket + header: StringTableRef + onOpen: WebSocketCallback + onMessage: WebSocketCallback + onClose: WebSocketCallback + +proc recv(ws: WebSocket, p: WebSocketRecvClosure): Future[string] {.async.}= + if not ws.socket.isClosed(): + result = await ws.p() + if result == "": + ws.socket.close() + if ws.onClose != nil: + ws.onClose(ws, nil) + return result + +proc reŅvSize(ws: WebSocket, size: int): Future[string] {.async.} = + proc recvSizeClosure(ws: WebSocket): Future[string] {.async.} = + return await ws.socket.recv(size) + return await ws.recv(recvSizeClosure) |