summary refs log tree commit diff stats
path: root/tests/vm/tmitems_vm.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/vm/tmitems_vm.nim')
-rw-r--r--tests/vm/tmitems_vm.nim45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/vm/tmitems_vm.nim b/tests/vm/tmitems_vm.nim
new file mode 100644
index 000000000..87835d1cd
--- /dev/null
+++ b/tests/vm/tmitems_vm.nim
@@ -0,0 +1,45 @@
+discard """
+  nimout: '''13'''
+  output: '''3
+3
+3'''
+"""
+# bug #3731
+var list {.compileTime.} = newSeq[int]()
+
+macro calc*(): typed =
+  list.add(1)
+  for c in list.mitems:
+    c = 13
+
+  for c in list:
+    echo c
+
+calc()
+
+# bug #3859
+import macros
+macro m: typed =
+  var s = newseq[NimNode](3)
+  # var s: array[3,NimNode]                 # not working either
+  for i in 0..<s.len: s[i] = newLit(3)    # works
+  #for x in s.mitems: x = newLit(3)
+  result = newStmtList()
+  for i in s:
+    result.add newCall(bindsym"echo", i)
+
+m()
+
+# bug 4741 & 5013
+proc test() =
+  var s = [("baz", 42), ("bath", 42)]
+  for i in s.mitems:
+    i[1] = 3
+  doAssert(s == [("baz", 3), ("bath", 3)])
+
+static:
+  test()
+  var s = [("baz", 42), ("bath", 42)]
+  for i in s.mitems:
+    i[1] = 3
+  doAssert(s == [("baz", 3), ("bath", 3)])