tdont_use_inner_scope.nim 646 B

12345678910111213141516171819202122232425262728
  1. # bug #2752
  2. import future, sequtils
  3. proc myFilter[T](it: (iterator(): T), f: (proc(anything: T):bool)): (iterator(): T) =
  4. iterator aNameWhichWillConflict(): T {.closure.}=
  5. for x in it():
  6. if f(x):
  7. yield x
  8. result = aNameWhichWillConflict
  9. iterator testIt():int {.closure.}=
  10. yield -1
  11. yield 2
  12. #let unusedVariable = myFilter(testIt, (x: int) => x > 0)
  13. proc onlyPos(it: (iterator(): int)): (iterator(): int)=
  14. iterator aNameWhichWillConflict(): int {.closure.}=
  15. var filtered = onlyPos(myFilter(it, (x:int) => x > 0))
  16. for x in filtered():
  17. yield x
  18. result = aNameWhichWillConflict
  19. let x = onlyPos(testIt)