From 56a1244380133ab400f98d2da15353e080ffb360 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 15 Oct 2026 14:46:38 +0200 Subject: Restrict index types to Int and Word --- testsuite/fail_compilation/array_dimension_size.elna | 8 ++++++++ testsuite/fail_compilation/array_dimension_type.elna | 10 ++++++++++ testsuite/fail_compilation/array_index_type.elna | 11 +++++++++++ testsuite/fail_compilation/constant_enum_to_int.elna | 2 +- testsuite/runnable/backquote_escape.elna | 4 ++++ 5 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 testsuite/fail_compilation/array_dimension_size.elna create mode 100644 testsuite/fail_compilation/array_dimension_type.elna create mode 100644 testsuite/fail_compilation/array_index_type.elna create mode 100644 testsuite/runnable/backquote_escape.elna (limited to 'testsuite') diff --git a/testsuite/fail_compilation/array_dimension_size.elna b/testsuite/fail_compilation/array_dimension_size.elna new file mode 100644 index 0000000..bd5bb7c --- /dev/null +++ b/testsuite/fail_compilation/array_dimension_size.elna @@ -0,0 +1,8 @@ +module + +proc f() +var + a: [0]Int (* @Error Array dimension must be greater than zero *) +return + +end. diff --git a/testsuite/fail_compilation/array_dimension_type.elna b/testsuite/fail_compilation/array_dimension_type.elna new file mode 100644 index 0000000..e4720c2 --- /dev/null +++ b/testsuite/fail_compilation/array_dimension_type.elna @@ -0,0 +1,10 @@ +module + +type Color = (red, green, blue) + +proc f() +var + a: [Color.red]Int (* @Error Array dimension must be of type 'Word' or 'Int', but got 'Color' *) +return + +end. diff --git a/testsuite/fail_compilation/array_index_type.elna b/testsuite/fail_compilation/array_index_type.elna new file mode 100644 index 0000000..e3081df --- /dev/null +++ b/testsuite/fail_compilation/array_index_type.elna @@ -0,0 +1,11 @@ +module + +proc f(i: Word8) +var + a: [10]Int + x: Int +begin + x := a[i] (* @Error Array index must be of type 'Word' or 'Int', but got 'Word8' *) +return + +end. diff --git a/testsuite/fail_compilation/constant_enum_to_int.elna b/testsuite/fail_compilation/constant_enum_to_int.elna index 194109b..60bfeae 100644 --- a/testsuite/fail_compilation/constant_enum_to_int.elna +++ b/testsuite/fail_compilation/constant_enum_to_int.elna @@ -7,5 +7,5 @@ var y: []Int begin - y := x[Enumeration.one to Enumeration.two] (* @Error Array index must be an integral type, but got 'Enumeration' *) + y := x[Enumeration.one to Enumeration.two] (* @Error Array index must be of type 'Word' or 'Int', but got 'Enumeration' *) end. diff --git a/testsuite/runnable/backquote_escape.elna b/testsuite/runnable/backquote_escape.elna new file mode 100644 index 0000000..b61e71c --- /dev/null +++ b/testsuite/runnable/backquote_escape.elna @@ -0,0 +1,4 @@ +program() +begin + assert(`\`` = `\{U+60}`) +end. -- cgit v1.2.3