diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-08 18:08:34 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-07-08 18:08:34 +0200 |
commit | 1d186ee9c335a54ae9700110afe4ec9e888b7b9d (patch) | |
tree | 18d5182658e2c90ac9cf0ad3708871164c13adf4 | |
parent | d83eb7064345ae09df927eedf53b4661a2341ffa (diff) | |
download | Nim-1d186ee9c335a54ae9700110afe4ec9e888b7b9d.tar.gz |
fixes #2377
-rw-r--r-- | compiler/semgnrc.nim | 7 | ||||
-rw-r--r-- | tests/async/tgeneric_async.nim | 9 |
2 files changed, 15 insertions, 1 deletions
diff --git a/compiler/semgnrc.nim b/compiler/semgnrc.nim index 0ba76ccd3..b78679411 100644 --- a/compiler/semgnrc.nim +++ b/compiler/semgnrc.nim @@ -426,7 +426,12 @@ proc semGenericStmt(c: PContext, n: PNode, n.sons[paramsPos] = semGenericStmt(c, n.sons[paramsPos], flags, ctx) n.sons[pragmasPos] = semGenericStmt(c, n.sons[pragmasPos], flags, ctx) var body: PNode - if n.sons[namePos].kind == nkSym: body = n.sons[namePos].sym.getBody + if n.sons[namePos].kind == nkSym: + let s = n.sons[namePos].sym + if sfGenSym in s.flags and s.ast == nil: + body = n.sons[bodyPos] + else: + body = s.getBody else: body = n.sons[bodyPos] n.sons[bodyPos] = semGenericStmtScope(c, body, flags, ctx) closeScope(c) diff --git a/tests/async/tgeneric_async.nim b/tests/async/tgeneric_async.nim new file mode 100644 index 000000000..af6370181 --- /dev/null +++ b/tests/async/tgeneric_async.nim @@ -0,0 +1,9 @@ + +import asyncdispatch + +when true: + # bug #2377 + proc test[T](v: T) {.async.} = + echo $v + + asyncCheck test[int](1) |