diff options
author | Alexander Ivanov <alehander42@gmail.com> | 2018-02-27 16:23:19 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2018-02-27 15:23:19 +0100 |
commit | 9c7374abcd2c1c79daccfef58c74964155985bbc (patch) | |
tree | 67845a5c96acb7bc919fe30c80af2f7c24bda271 /lib/js | |
parent | 0a8684db4cf3aa5c6fe8bd1b3abad83a24ad33bf (diff) | |
download | Nim-9c7374abcd2c1c79daccfef58c74964155985bbc.tar.gz |
Fix return (#7225)
Diffstat (limited to 'lib/js')
-rw-r--r-- | lib/js/asyncjs.nim | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/lib/js/asyncjs.nim b/lib/js/asyncjs.nim index 3c488dcfe..62444e49a 100644 --- a/lib/js/asyncjs.nim +++ b/lib/js/asyncjs.nim @@ -71,14 +71,17 @@ type PromiseJs* {.importcpp: "Promise".} = ref object ## A JavaScript Promise + proc replaceReturn(node: var NimNode) = var z = 0 for s in node: var son = node[z] + let jsResolve = ident("jsResolve") if son.kind == nnkReturnStmt: - node[z] = nnkReturnStmt.newTree(nnkCall.newTree(ident("jsResolve"), son[0])) + let value = if son[0].kind != nnkEmpty: nnkCall.newTree(jsResolve, son[0]) else: jsResolve + node[z] = nnkReturnStmt.newTree(value) elif son.kind == nnkAsgn and son[0].kind == nnkIdent and $son[0] == "result": - node[z] = nnkAsgn.newTree(son[0], nnkCall.newTree(ident("jsResolve"), son[1])) + node[z] = nnkAsgn.newTree(son[0], nnkCall.newTree(jsResolve, son[1])) else: replaceReturn(son) inc z @@ -92,8 +95,7 @@ proc generateJsasync(arg: NimNode): NimNode = assert arg.kind == nnkProcDef result = arg var isVoid = false - var jsResolveNode = ident("jsResolve") - + let jsResolve = ident("jsResolve") if arg.params[0].kind == nnkEmpty: result.params[0] = nnkBracketExpr.newTree(ident("Future"), ident("void")) isVoid = true @@ -112,7 +114,7 @@ proc generateJsasync(arg: NimNode): NimNode = var resolve: NimNode if isVoid: resolve = quote: - var `jsResolveNode` {.importcpp: "undefined".}: Future[void] + var `jsResolve` {.importcpp: "undefined".}: Future[void] else: resolve = quote: proc jsResolve[T](a: T): Future[T] {.importcpp: "#".} @@ -124,7 +126,7 @@ proc generateJsasync(arg: NimNode): NimNode = if len(code) > 0 and isVoid: var voidFix = quote: - return `jsResolveNode` + return `jsResolve` result.body.add(voidFix) result.pragma = quote: |