diff options
Diffstat (limited to 'tests/vm/tmitems_vm.nim')
-rw-r--r-- | tests/vm/tmitems_vm.nim | 45 |
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)]) |