tclosures.nim 657 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. discard """
  2. targets: "c js"
  3. """
  4. import std/assertions
  5. block: # bug #4299
  6. proc scopeProc() =
  7. proc normalProc() =
  8. discard
  9. proc genericProc[T]() =
  10. normalProc()
  11. genericProc[string]()
  12. scopeProc()
  13. block: # bug #12492
  14. proc foo() =
  15. var i = 0
  16. proc bar() =
  17. inc i
  18. bar()
  19. doAssert i == 1
  20. foo()
  21. static:
  22. foo()
  23. block: # bug #10849
  24. type
  25. Generic[T] = ref object
  26. getState: proc(): T
  27. proc newGeneric[T](): Generic[T] =
  28. var state: T
  29. proc getState[T](): T =
  30. state
  31. Generic[T](getState: getState)
  32. let g = newGeneric[int]()
  33. let state = g.getState()
  34. doAssert state == 0