diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-09-15 21:12:59 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-09-15 21:12:59 +0200 |
commit | ecf1424456bd95167ac0e1e721307032e22d172f (patch) | |
tree | 61781a1a7f4a037cfe88afc0988555e0b17d9782 /tests/vm/tstring_openarray.nim | |
parent | 0fe2a83dda25d682f04f7af0f73a50c45362c79f (diff) | |
parent | 8ea78b1bc9dc0b4d883b4f0750ee84e93605b82a (diff) | |
download | Nim-ecf1424456bd95167ac0e1e721307032e22d172f.tar.gz |
Merge branch 'devel' into araq
Diffstat (limited to 'tests/vm/tstring_openarray.nim')
-rw-r--r-- | tests/vm/tstring_openarray.nim | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/vm/tstring_openarray.nim b/tests/vm/tstring_openarray.nim new file mode 100644 index 000000000..1b8a1304c --- /dev/null +++ b/tests/vm/tstring_openarray.nim @@ -0,0 +1,34 @@ + +# tests various bug when passing string to openArray argument in VM. +# bug #6086 +proc map*[T, S](data: openArray[T], op: proc (x: T): S {.closure.}): + seq[S]{.inline.} = +# map inlined from sequtils + newSeq(result, data.len) + for i in 0..data.len-1: result[i] = op(data[i]) + + +proc set_all[T](s: var openArray[T]; val: T) = + for i in 0..<s.len: + s[i] = val + +proc test() = + var a0 = "hello_world" + var a1 = [1,2,3,4,5,6,7,8,9] + var a2 = @[1,2,3,4,5,6,7,8,9] + a0.set_all('i') + a1.set_all(4) + a2.set_all(4) + doAssert a0 == "iiiiiiiiiii" + doAssert a1 == [4,4,4,4,4,4,4,4,4] + doAssert a2 == @[4,4,4,4,4,4,4,4,4] + +const constval0 = "hello".map(proc(x: char): char = x) +const constval1 = [1,2,3,4].map(proc(x: int): int = x) + +doAssert("hello".map(proc(x: char): char = x) == constval0) +doAssert([1,2,3,4].map(proc(x: int): int = x) == constval1) + +test() +static: + test() |