diff options
author | metagn <metagngn@gmail.com> | 2024-01-18 23:14:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-18 21:14:27 +0100 |
commit | 3ab8b6b2cf4488c114284aa5ad5b7af0d4055312 (patch) | |
tree | e360389bd78ca1f3790c4934f2003773d2b1b999 /tests/array | |
parent | 8a38880ef7962fe4a3155449eb161eeffda0cda5 (diff) | |
download | Nim-3ab8b6b2cf4488c114284aa5ad5b7af0d4055312.tar.gz |
error on large integer types as array index range (#23229)
fixes #17163, refs #23204 Types that aren't `tyRange` and are bigger than 16 bits, so `int32`, `uint64`, `int` etc, are disallowed as array index range types. `tyRange` is excluded because the max array size is backend independent (except for the specific size of `high(uint64)` which crashes the compiler) and so there should still be an escape hatch for people who want bigger arrays.
Diffstat (limited to 'tests/array')
-rw-r--r-- | tests/array/tlargeindex.nim | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/array/tlargeindex.nim b/tests/array/tlargeindex.nim new file mode 100644 index 000000000..61bcbd61d --- /dev/null +++ b/tests/array/tlargeindex.nim @@ -0,0 +1,18 @@ +discard """ + cmd: "nim check --hints:off $file" +""" + +# issue #17163 +var e: array[int32, byte] #[tt.Error + ^ index type 'int32' for array is too large]# +var f: array[uint32, byte] #[tt.Error + ^ index type 'uint32' for array is too large]# +var g: array[int64, byte] #[tt.Error + ^ index type 'int64' for array is too large]# +var h: array[uint64, byte] #[tt.Error + ^ index type 'uint64' for array is too large]# + +# crash in issue #23204 +proc y[N](): array[N, int] = default(array[N, int]) #[tt.Error + ^ index type 'int' for array is too large]# +discard y[int]() |