mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
Fixes #5995
This commit is contained in:
@@ -1129,7 +1129,7 @@ proc semProcAnnotation(c: PContext, prc: PNode;
|
||||
x.add(it.sons[1])
|
||||
x.add(prc)
|
||||
# recursion assures that this works for multiple macro annotations too:
|
||||
result = semStmt(c, x)
|
||||
result = semExpr(c, x)
|
||||
# since a proc annotation can set pragmas, we process these here again.
|
||||
# This is required for SqueakNim-like export pragmas.
|
||||
if result.kind in procDefs and result[namePos].kind == nkSym and
|
||||
|
||||
@@ -301,7 +301,7 @@ proc verifyReturnType(typeName: string) {.compileTime.} =
|
||||
proc asyncSingleProc(prc: NimNode): NimNode {.compileTime.} =
|
||||
## This macro transforms a single procedure into a closure iterator.
|
||||
## The ``async`` macro supports a stmtList holding multiple async procedures.
|
||||
if prc.kind notin {nnkProcDef, nnkLambda, nnkMethodDef}:
|
||||
if prc.kind notin {nnkProcDef, nnkLambda, nnkMethodDef, nnkDo}:
|
||||
error("Cannot transform this node kind into an async proc." &
|
||||
" proc/method definition or lambda node expected.")
|
||||
|
||||
|
||||
@@ -51,5 +51,8 @@ proc main() =
|
||||
|
||||
var builder = newBuilder()
|
||||
|
||||
# Test {.async.} pragma with do notation: #5995
|
||||
builder.client = newClient("builder") do(client: Client, msg: JsonNode) {.async.}:
|
||||
await onMessage(builder, msg)
|
||||
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user