tmitems_vm.nim 825 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. discard """
  2. targets: "c"
  3. nimout: '''13'''
  4. output: '''3
  5. 3
  6. 3'''
  7. """
  8. # bug #3731
  9. var list {.compileTime.} = newSeq[int]()
  10. macro calc*(): typed =
  11. list.add(1)
  12. for c in list.mitems:
  13. c = 13
  14. for c in list:
  15. echo c
  16. calc()
  17. # bug #3859
  18. import macros
  19. macro m: typed =
  20. var s = newseq[NimNode](3)
  21. # var s: array[3,NimNode] # not working either
  22. for i in 0..<s.len: s[i] = newLit(3) # works
  23. #for x in s.mitems: x = newLit(3)
  24. result = newStmtList()
  25. for i in s:
  26. result.add newCall(bindsym"echo", i)
  27. m()
  28. # bug 4741 & 5013
  29. proc test() =
  30. var s = [("baz", 42), ("bath", 42)]
  31. for i in s.mitems:
  32. i[1] = 3
  33. doAssert(s == [("baz", 3), ("bath", 3)])
  34. static:
  35. test()
  36. var s = [("baz", 42), ("bath", 42)]
  37. for i in s.mitems:
  38. i[1] = 3
  39. doAssert(s == [("baz", 3), ("bath", 3)])