fixes #4371
This commit is contained in:
parent
caa7f42e8e
commit
b47d9b7b91
21 changed files with 84 additions and 39 deletions
23
tests/async/treturn_await.nim
Normal file
23
tests/async/treturn_await.nim
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
|
||||
# bug #4371
|
||||
|
||||
import strutils, asyncdispatch, asynchttpserver
|
||||
|
||||
type
|
||||
List[A] = ref object
|
||||
value: A
|
||||
next: List[A]
|
||||
StrPair* = tuple[k, v: string]
|
||||
Context* = object
|
||||
position*: int
|
||||
accept*: bool
|
||||
headers*: List[StrPair]
|
||||
Handler* = proc(req: ref Request, ctx: Context): Future[Context]
|
||||
|
||||
proc logging*(handler: Handler): auto =
|
||||
proc h(req: ref Request, ctx: Context): Future[Context] {.async.} =
|
||||
let ret = handler(req, ctx)
|
||||
debugEcho "$3 $1 $2".format(req.reqMethod, req.url.path, req.hostname)
|
||||
return await ret
|
||||
|
||||
return h
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
discard """
|
||||
output: "empty"
|
||||
output: "void"
|
||||
"""
|
||||
|
||||
# bug #898
|
||||
|
|
|
|||
21
tests/metatype/tvoid_must_not_match.nim
Normal file
21
tests/metatype/tvoid_must_not_match.nim
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
discard """
|
||||
errormsg: "type mismatch: got (Future[system.int], void)"
|
||||
line: 20
|
||||
"""
|
||||
|
||||
type
|
||||
Future[T] = object
|
||||
value: T
|
||||
|
||||
proc complete[T](x: T) =
|
||||
echo "completed"
|
||||
let y = x
|
||||
|
||||
|
||||
proc complete*[T](future: var Future[T], val: T) =
|
||||
future.value = val
|
||||
|
||||
var a: Future[int]
|
||||
|
||||
complete(a):
|
||||
echo "yielding void"
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
discard """
|
||||
line: 16
|
||||
errormsg: "type mismatch: got (empty)"
|
||||
errormsg: "type mismatch: got (void)"
|
||||
"""
|
||||
|
||||
# bug #950
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue