summary refs log tree commit diff stats
path: root/tests/array
diff options
context:
space:
mode:
authorJasper Jenkins <jasper.vs.jenkins@gmail.com>2019-06-18 05:16:33 -0700
committerAndreas Rumpf <rumpf_a@web.de>2019-06-18 14:16:33 +0200
commit8ee0f14ab6b8decffe8673dac4d761c352d8e31d (patch)
tree952363477abebe5af2c6a3181ef1bc3f683c0967 /tests/array
parentc99ce5051e7024319c2d600af8b218dfc997bde8 (diff)
downloadNim-8ee0f14ab6b8decffe8673dac4d761c352d8e31d.tar.gz
literal array indices (#11424)
Diffstat (limited to 'tests/array')
-rw-r--r--tests/array/tarray.nim9
-rw-r--r--tests/array/tidx_lit_err1.nim6
-rw-r--r--tests/array/tidx_lit_err2.nim5
-rw-r--r--tests/array/tidx_lit_err3.nim5
4 files changed, 25 insertions, 0 deletions
diff --git a/tests/array/tarray.nim b/tests/array/tarray.nim
index b40c8757c..6fa305064 100644
--- a/tests/array/tarray.nim
+++ b/tests/array/tarray.nim
@@ -548,3 +548,12 @@ block t3899:
     x.a[i]
   const c = O(a: [1.0,2.0])
   echo c[2]
+
+block arrayLiterals:
+  type ABC = enum A, B, C
+  template Idx[IdxT, ElemT](arr: array[IdxT, ElemT]): untyped = IdxT
+  doAssert [A: 0, B: 1].Idx is range[A..B]
+  doAssert [A: 0, 1, 3].Idx is ABC
+  doAssert [1: 2][1] == 2
+  doAssert [-1'i8: 2][-1] == 2
+  doAssert [-1'i8: 2, 3, 4, 5].Idx is range[-1'i8..2'i8]
diff --git a/tests/array/tidx_lit_err1.nim b/tests/array/tidx_lit_err1.nim
new file mode 100644
index 000000000..b1823e5a3
--- /dev/null
+++ b/tests/array/tidx_lit_err1.nim
@@ -0,0 +1,6 @@
+discard """
+  errormsg: "size of array exceeds range of index type 'range 1..2(Color)' by 3 elements"
+  line: 6
+"""
+type Color = enum Red, Green, Blue
+let y = [Green: 0, 1, 2, 3, 4]
diff --git a/tests/array/tidx_lit_err2.nim b/tests/array/tidx_lit_err2.nim
new file mode 100644
index 000000000..75f5f227b
--- /dev/null
+++ b/tests/array/tidx_lit_err2.nim
@@ -0,0 +1,5 @@
+discard """
+  errormsg: "expected ordinal value for array index, got '\"string\"'"
+  line: 5
+"""
+let x = ["string": 0, "index": 1]
diff --git a/tests/array/tidx_lit_err3.nim b/tests/array/tidx_lit_err3.nim
new file mode 100644
index 000000000..95922bc50
--- /dev/null
+++ b/tests/array/tidx_lit_err3.nim
@@ -0,0 +1,5 @@
+discard """
+  errormsg: "size of array exceeds range of index type 'range 2147483646..2147483647(int32)' by 1 elements"
+  line: 5
+"""
+echo [high(int32)-1: 1, 2, 3]