diff options
author | Parashurama <Rhagdamaziel@ymail.com> | 2017-09-02 22:53:22 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-09-02 22:53:22 +0200 |
commit | 0861249de75adabc5d9761c77f7f057644014fd2 (patch) | |
tree | 314d6863b0c8fa50afd83b30ff1d6ccf6c3abf89 /tests/vm/tseq_badinit.nim | |
parent | 6ce6883fad6a31f92f71fe271c3b2c82a17d0562 (diff) | |
download | Nim-0861249de75adabc5d9761c77f7f057644014fd2.tar.gz |
Fix seq.setLen initialisation in VM (#6224)
Diffstat (limited to 'tests/vm/tseq_badinit.nim')
-rw-r--r-- | tests/vm/tseq_badinit.nim | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/vm/tseq_badinit.nim b/tests/vm/tseq_badinit.nim new file mode 100644 index 000000000..15889d60e --- /dev/null +++ b/tests/vm/tseq_badinit.nim @@ -0,0 +1,58 @@ + +type + AObj = object + i: int + d: float + ATup = tuple + i: int + d: float + MyEnum = enum + E01, E02, E03 + Myrange = range[0..10] + + MyProc = proc (x: int): bool + MyInt = distinct int + MyAlias = MyInt + MySet = set[char] + MyArray = array[4, char] + MySeq = seq[string] + +template test(typename, default: untyped) = + proc `abc typename`(): seq[typename] = + result = newSeq[typename]() + result.add(default) + result.setLen(3) + for i in 0 .. <2: + result[i] = default + + const constval = `abc typename`() + doAssert(constval == `abc typename`()) + + proc `arr typename`(): array[4, typename] = + for i in 0 .. <2: + result[i] = default + const constarr = `arr typename`() + doAssert(constarr == `arr typename`()) + +proc even(x: int): bool = x mod 2 == 0 +proc `==`(x, y: MyInt): bool = ord(x) == ord(y) +proc `$`(x: MyInt): string = $ord(x) +proc `$`(x: proc): string = + if x.isNil: "(nil)" else: "funcptr" + +test(int, 0) +test(uint, 0) +test(float, 0.1) +test(char, '0') +test(bool, false) +test(uint8, 2) +test(string, "data") +test(MyProc, even) +test(MyEnum, E02) +test(AObj, AObj()) +test(ATup, (i:11, d:9.99)) +test(Myrange, 4) +test(MyInt, MyInt(4)) +test(MyAlias, MyAlias(4)) +test(MyArray, ['0','1','2','3']) +test(MySeq, @["data"]) |