mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 16:38:33 +00:00
literal array indices (#11424)
This commit is contained in:
committed by
Andreas Rumpf
parent
c99ce5051e
commit
8ee0f14ab6
@@ -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]
|
||||
|
||||
6
tests/array/tidx_lit_err1.nim
Normal file
6
tests/array/tidx_lit_err1.nim
Normal file
@@ -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]
|
||||
5
tests/array/tidx_lit_err2.nim
Normal file
5
tests/array/tidx_lit_err2.nim
Normal file
@@ -0,0 +1,5 @@
|
||||
discard """
|
||||
errormsg: "expected ordinal value for array index, got '\"string\"'"
|
||||
line: 5
|
||||
"""
|
||||
let x = ["string": 0, "index": 1]
|
||||
5
tests/array/tidx_lit_err3.nim
Normal file
5
tests/array/tidx_lit_err3.nim
Normal file
@@ -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]
|
||||
Reference in New Issue
Block a user