summary refs log tree commit diff stats
path: root/tests/arc/torcmisc.nim
blob: 20dd18fb31bab1829c5633e97dafefff0667359c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
discard """
  output: '''success'''
  cmd: "nim c --gc:orc -d:release $file"
"""

# bug #17170

when true:
  import asyncdispatch

  type
    Flags = ref object
      returnedEof, reading: bool

  proc dummy(): Future[string] {.async.} =
    result = "foobar"

  proc hello(s: Flags) {.async.} =
    let buf =
      try:
        await dummy()
      except CatchableError as exc:
        # When an exception happens here, the Bufferstream is effectively
        # broken and no more reads will be valid - for now, return EOF if it's
        # called again, though this is not completely true - EOF represents an
        # "orderly" shutdown and that's not what happened here..
        s.returnedEof = true
        raise exc
      finally:
        s.reading = false

  waitFor hello(Flags())
  echo "success"