mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-30 01:44:37 +00:00
63 lines
1.2 KiB
Nim
63 lines
1.2 KiB
Nim
discard """
|
|
output: '''
|
|
42
|
|
43
|
|
43
|
|
1
|
|
2
|
|
3
|
|
4
|
|
'''
|
|
"""
|
|
|
|
# xxx move to tests/async/tasyncintemplate.nim
|
|
import asyncdispatch
|
|
|
|
block: # bug #16159
|
|
template foo() =
|
|
proc temp(): Future[int] {.async.} = return 42
|
|
proc tempVoid(): Future[void] {.async.} = echo await temp()
|
|
foo()
|
|
waitFor tempVoid()
|
|
|
|
block: # aliasing `void`
|
|
template foo() =
|
|
type Foo = void
|
|
proc temp(): Future[int] {.async.} = return 43
|
|
proc tempVoid(): Future[Foo] {.async.} = echo await temp()
|
|
proc tempVoid2() {.async.} = echo await temp()
|
|
foo()
|
|
waitFor tempVoid()
|
|
waitFor tempVoid2()
|
|
|
|
block: # sanity check
|
|
template foo() =
|
|
proc bad(): int {.async.} = discard
|
|
doAssert not compiles(bad())
|
|
|
|
block: # bug #16786
|
|
block:
|
|
proc main(a: int|string)=
|
|
proc bar(b: int|string) = echo b
|
|
bar(a)
|
|
main(1)
|
|
|
|
block:
|
|
proc main(a: int) : Future[void] {.async.} =
|
|
proc bar(b: int): Future[void] {.async.} = echo b
|
|
await bar(a)
|
|
waitFor main(2)
|
|
|
|
block:
|
|
proc main(a: int) : Future[void] {.async.} =
|
|
proc bar(b: int | string): Future[void] {.async.} = echo b
|
|
await bar(a)
|
|
waitFor main(3)
|
|
|
|
block:
|
|
# bug
|
|
proc main(a: int|string) =
|
|
proc bar(b: int): Future[void] {.async.} = echo b
|
|
waitFor bar(a)
|
|
main(4)
|