summary refs log blame commit diff stats
path: root/tests/closure/tclosure_issues.nim
blob: 4688834de94a9915ccde231637d101d6c773aab2 (plain) (tree)
1
2
3
4
5
6
7
           
                 




        



















































                                                                          






                             















                           
discard """
  output: '''true
(999, 0)
ok 0
ok 1
ok 2
'''
"""


block tissue600:
  for i in 1..1:
    var reported = false
    proc report() =
      reported = true



import sequtils
block tissue1502def:
  let xs: seq[tuple[key: string, val: seq[string]]] = @[("foo", @["bar"])]

  let maps = xs.map(
    proc(x: auto): tuple[typ: string, maps: seq[string]] =
      (x.key, x.val.map(proc(x: string): string = x)))



block tissue1642:
  var i = 0
  proc p() = inc(i)



block tissue1846:
  type
    TBinOp[T] = proc (x,y: T): bool
    THeap[T] = object
      cmp: TBinOp[T]

  proc less[T](x,y: T): bool =
    x < y

  proc initHeap[T](cmp: TBinOp[T]): THeap[T] =
    result.cmp = cmp

  var h = initHeap[int](less[int])
  echo h.cmp(2,3)



block tissue1911:
  proc foo(x: int) : auto =

    proc helper() : int = x
    proc bar() : int = helper()
    proc baz() : int = helper()

    return (bar, baz)

# bug #11523
proc foo(): proc =
  let a = 999
  return proc(): (int, int) =
    return (a, 0)

echo foo()()


block tissue7104:
  proc sp(cb: proc())=
      cb()

  sp:
      var i = 0
      echo "ok ", i
      sp():
          inc i
          echo "ok ", i
          sp do:
              inc i
              echo "ok ", i