From 1a2bda45ec11d6d0fcba4ba61114c352ae66d4de Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Tue, 5 Jan 2016 10:20:24 +0100 Subject: fixes #2007 --- tests/async/tlambda.nim | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 tests/async/tlambda.nim (limited to 'tests/async') diff --git a/tests/async/tlambda.nim b/tests/async/tlambda.nim new file mode 100644 index 000000000..e0ff1f483 --- /dev/null +++ b/tests/async/tlambda.nim @@ -0,0 +1,55 @@ + +# bug 2007 + +import asyncdispatch, asyncnet, logging, json, uri, strutils, future + +type + Builder = ref object + client: Client + build: Build + + ProgressCB* = proc (message: string): Future[void] {.closure, gcsafe.} + + Build* = ref object + onProgress*: ProgressCB + + Client = ref ClientObj + ClientObj = object + onMessage: proc (client: Client, msg: JsonNode): Future[void] + +proc newClient*(name: string, + onMessage: (Client, JsonNode) -> Future[void]): Client = + new result + result.onMessage = onMessage + +proc newBuild*(onProgress: ProgressCB): Build = + new result + result.onProgress = onProgress + +proc start(build: Build, repo, hash: string) {.async.} = + let path = repo.parseUri().path.toLower() + +proc onProgress(builder: Builder, message: string) {.async.} = + debug($message) + +proc onMessage(builder: Builder, message: JsonNode) {.async.} = + debug("onMessage") + +proc newBuilder(): Builder = + var cres: Builder + new cres + + cres.client = newClient("builder", (client, msg) => (onMessage(cres, msg))) + cres.build = newBuild( + proc (msg: string): Future[void] {.closure, gcsafe.} = onProgress(cres, msg)) + return cres + +proc main() = + # Set up logging. + var console = newConsoleLogger(fmtStr = verboseFmtStr) + addHandler(console) + + var builder = newBuilder() + + +main() -- cgit 1.4.1-2-gfad0 n='/ahoang/Nim/log/compiler/sempass2.nim'>
path: root/compiler/sempass2.nim
blob: f9c577977b42d1bce26342a4c1bf72e65115d2cf (plain) (tree)
1
2
3
4
5
6
7
8
9