From 47521ad6d85f9bd6caee39696ce40dff82cfa50d Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Wed, 2 Sep 2026 13:31:04 +0200 Subject: Implement program entry point --- testsuite/fail_compilation/assign_array_length.elna | 1 + testsuite/fail_compilation/assign_const_to_pointer.elna | 1 + testsuite/fail_compilation/assign_from_const_pointer.elna | 1 + testsuite/fail_compilation/assign_slice_ptr.elna | 1 + testsuite/fail_compilation/assign_to_call_result_field.elna | 1 + testsuite/fail_compilation/assign_to_slicing.elna | 1 + testsuite/fail_compilation/assign_void_call.elna | 1 + testsuite/fail_compilation/case_label_overflow.elna | 1 + testsuite/fail_compilation/case_non_constant.elna | 1 + testsuite/fail_compilation/case_type_mismatch.elna | 1 + testsuite/fail_compilation/case_unique_label.elna | 1 + testsuite/fail_compilation/compare_unrelated_records.elna | 1 + testsuite/fail_compilation/constant_enum_to_int.elna | 1 + testsuite/fail_compilation/import_local_collision/helper.elna | 4 +--- testsuite/fail_compilation/import_local_collision/sut.elna | 3 ++- testsuite/fail_compilation/non_constant_array_dimension.elna | 1 + testsuite/fail_compilation/opaque_pointer_arithmetic.elna | 1 + testsuite/fail_compilation/opaque_slice_element.elna | 1 - testsuite/fail_compilation/pointer-cycle.elna | 1 + testsuite/fail_compilation/proc_type_without_parameters.elna | 1 + testsuite/fail_compilation/procedure-cycle.elna | 1 + testsuite/fail_compilation/record-base-cycle-indirect.elna | 1 + testsuite/fail_compilation/record-base-cycle.elna | 1 + testsuite/fail_compilation/record_base_constructor_type_mismatch.elna | 1 + testsuite/fail_compilation/record_duplicate_field.elna | 1 - .../fail_compilation/record_duplicate_field_import_base/sut.elna | 1 - testsuite/fail_compilation/redefined_variable.elna | 1 - testsuite/fail_compilation/reference_call_result_field.elna | 1 + testsuite/fail_compilation/reference_literal.elna | 1 + testsuite/fail_compilation/reference_slicing.elna | 1 + testsuite/fail_compilation/slice-cycle.elna | 1 + testsuite/fail_compilation/while_condition.elna | 1 + 32 files changed, 29 insertions(+), 8 deletions(-) (limited to 'testsuite/fail_compilation') diff --git a/testsuite/fail_compilation/assign_array_length.elna b/testsuite/fail_compilation/assign_array_length.elna index ac8f9df..bf6f96c 100644 --- a/testsuite/fail_compilation/assign_array_length.elna +++ b/testsuite/fail_compilation/assign_array_length.elna @@ -2,6 +2,7 @@ var slice: []Int array: [2]Int +program() begin array.length := slice.length (* @Error Cannot assign to a value of type 'const Word', because it is constant or contains constant members *) end. diff --git a/testsuite/fail_compilation/assign_const_to_pointer.elna b/testsuite/fail_compilation/assign_const_to_pointer.elna index 87047e5..7e26679 100644 --- a/testsuite/fail_compilation/assign_const_to_pointer.elna +++ b/testsuite/fail_compilation/assign_const_to_pointer.elna @@ -2,6 +2,7 @@ var c: const Int := 2 p: Pointer +program() begin p := @c (* @Error Expected type 'Pointer', but got '\^const Int' *) end. diff --git a/testsuite/fail_compilation/assign_from_const_pointer.elna b/testsuite/fail_compilation/assign_from_const_pointer.elna index c39d5cd..5dc050d 100644 --- a/testsuite/fail_compilation/assign_from_const_pointer.elna +++ b/testsuite/fail_compilation/assign_from_const_pointer.elna @@ -2,6 +2,7 @@ var cv: const Pointer := nil p: Pointer +program() begin p := cv (* @Error Expected type 'Pointer', but got 'const Pointer' *) end. diff --git a/testsuite/fail_compilation/assign_slice_ptr.elna b/testsuite/fail_compilation/assign_slice_ptr.elna index aa7a379..6f09f00 100644 --- a/testsuite/fail_compilation/assign_slice_ptr.elna +++ b/testsuite/fail_compilation/assign_slice_ptr.elna @@ -2,6 +2,7 @@ var slice: []Int array: [2]Int +program() begin slice.ptr := array.ptr (* @Error Cannot assign to a value of type 'const \^Int', because it is constant or contains constant members *) end. diff --git a/testsuite/fail_compilation/assign_to_call_result_field.elna b/testsuite/fail_compilation/assign_to_call_result_field.elna index 509b2dd..25096ed 100644 --- a/testsuite/fail_compilation/assign_to_call_result_field.elna +++ b/testsuite/fail_compilation/assign_to_call_result_field.elna @@ -10,6 +10,7 @@ begin result.x := 1 return result +program() begin make().x := 5 (* @Error Expression of type 'Int' is not addressable *) end. diff --git a/testsuite/fail_compilation/assign_to_slicing.elna b/testsuite/fail_compilation/assign_to_slicing.elna index 2266431..6743e06 100644 --- a/testsuite/fail_compilation/assign_to_slicing.elna +++ b/testsuite/fail_compilation/assign_to_slicing.elna @@ -2,6 +2,7 @@ var s: [3]Int t: [2]Int +program() begin s[1 to 2] := t[1 to 2] (* @Error Expression of type '\[\]Int' is not addressable *) end. diff --git a/testsuite/fail_compilation/assign_void_call.elna b/testsuite/fail_compilation/assign_void_call.elna index d18b1c8..381bb06 100644 --- a/testsuite/fail_compilation/assign_void_call.elna +++ b/testsuite/fail_compilation/assign_void_call.elna @@ -4,6 +4,7 @@ var proc v() return +program() begin x := v() (* @Error Expected type 'Int', but the expression has no value *) end. diff --git a/testsuite/fail_compilation/case_label_overflow.elna b/testsuite/fail_compilation/case_label_overflow.elna index ab6dbfd..787f043 100644 --- a/testsuite/fail_compilation/case_label_overflow.elna +++ b/testsuite/fail_compilation/case_label_overflow.elna @@ -1,6 +1,7 @@ var x: Int8 := 100i8 +program() begin case x of 100i8: assert(true) diff --git a/testsuite/fail_compilation/case_non_constant.elna b/testsuite/fail_compilation/case_non_constant.elna index dc69703..a446c29 100644 --- a/testsuite/fail_compilation/case_non_constant.elna +++ b/testsuite/fail_compilation/case_non_constant.elna @@ -8,6 +8,7 @@ var r: R x: R +program() begin x := r; case x of diff --git a/testsuite/fail_compilation/case_type_mismatch.elna b/testsuite/fail_compilation/case_type_mismatch.elna index 9cdae38..57afd1f 100644 --- a/testsuite/fail_compilation/case_type_mismatch.elna +++ b/testsuite/fail_compilation/case_type_mismatch.elna @@ -1,6 +1,7 @@ var x: Int +program() begin case x of 1: (* ok *) diff --git a/testsuite/fail_compilation/case_unique_label.elna b/testsuite/fail_compilation/case_unique_label.elna index a97fb37..7ee8391 100644 --- a/testsuite/fail_compilation/case_unique_label.elna +++ b/testsuite/fail_compilation/case_unique_label.elna @@ -1,3 +1,4 @@ +program() begin case 3 of 1: diff --git a/testsuite/fail_compilation/compare_unrelated_records.elna b/testsuite/fail_compilation/compare_unrelated_records.elna index 71eaeda..1699406 100644 --- a/testsuite/fail_compilation/compare_unrelated_records.elna +++ b/testsuite/fail_compilation/compare_unrelated_records.elna @@ -12,6 +12,7 @@ var b: B ok: Bool +program() begin ok := b = a (* @Error Invalid operands of type 'B' and 'A' for operator = *) end. diff --git a/testsuite/fail_compilation/constant_enum_to_int.elna b/testsuite/fail_compilation/constant_enum_to_int.elna index 4be6131..52c31c3 100644 --- a/testsuite/fail_compilation/constant_enum_to_int.elna +++ b/testsuite/fail_compilation/constant_enum_to_int.elna @@ -5,6 +5,7 @@ var x: [3]Int := [1, 2, 3] y: []Int +program() begin y := x[Enumeration.one to Enumeration.two] (* @Error Array index must be an integral type, but got 'Enumeration' *) end. diff --git a/testsuite/fail_compilation/import_local_collision/helper.elna b/testsuite/fail_compilation/import_local_collision/helper.elna index d6e3712..e60ca8e 100644 --- a/testsuite/fail_compilation/import_local_collision/helper.elna +++ b/testsuite/fail_compilation/import_local_collision/helper.elna @@ -1,6 +1,4 @@ var - X*: Int + X*: Int := 1 -begin - X := 1 end. diff --git a/testsuite/fail_compilation/import_local_collision/sut.elna b/testsuite/fail_compilation/import_local_collision/sut.elna index a9de9c9..8b52586 100644 --- a/testsuite/fail_compilation/import_local_collision/sut.elna +++ b/testsuite/fail_compilation/import_local_collision/sut.elna @@ -3,5 +3,6 @@ import helper var X: Int (* @Error Symbol 'X' has been already defined *) -begin +program() + end. diff --git a/testsuite/fail_compilation/non_constant_array_dimension.elna b/testsuite/fail_compilation/non_constant_array_dimension.elna index 4ab0d34..e3661c7 100644 --- a/testsuite/fail_compilation/non_constant_array_dimension.elna +++ b/testsuite/fail_compilation/non_constant_array_dimension.elna @@ -4,6 +4,7 @@ var begin return +program() begin f(5) end. diff --git a/testsuite/fail_compilation/opaque_pointer_arithmetic.elna b/testsuite/fail_compilation/opaque_pointer_arithmetic.elna index 307aed8..0223cc8 100644 --- a/testsuite/fail_compilation/opaque_pointer_arithmetic.elna +++ b/testsuite/fail_compilation/opaque_pointer_arithmetic.elna @@ -4,6 +4,7 @@ type var p: ^Handle +program() begin p := p + 1 (* @Error Opaque type 'Handle' cannot be used as an element type in pointer arithmetic *) end. diff --git a/testsuite/fail_compilation/opaque_slice_element.elna b/testsuite/fail_compilation/opaque_slice_element.elna index 0f28dae..f50be8a 100644 --- a/testsuite/fail_compilation/opaque_slice_element.elna +++ b/testsuite/fail_compilation/opaque_slice_element.elna @@ -4,5 +4,4 @@ type var s: []Handle (* @Error Opaque type 'Handle' cannot be used to declare a variable *) -begin end. diff --git a/testsuite/fail_compilation/pointer-cycle.elna b/testsuite/fail_compilation/pointer-cycle.elna index f9ee649..fe0258a 100644 --- a/testsuite/fail_compilation/pointer-cycle.elna +++ b/testsuite/fail_compilation/pointer-cycle.elna @@ -1,3 +1,4 @@ type A = ^A (* @Error Type declaration forms a cycle: A -> A *) + end. diff --git a/testsuite/fail_compilation/proc_type_without_parameters.elna b/testsuite/fail_compilation/proc_type_without_parameters.elna index 92514f6..3868e1b 100644 --- a/testsuite/fail_compilation/proc_type_without_parameters.elna +++ b/testsuite/fail_compilation/proc_type_without_parameters.elna @@ -4,6 +4,7 @@ var proc f() return +program() begin x := f (* @Error Expected type 'Int', but got 'proc\(\)' *) end. diff --git a/testsuite/fail_compilation/procedure-cycle.elna b/testsuite/fail_compilation/procedure-cycle.elna index 796cccf..2284605 100644 --- a/testsuite/fail_compilation/procedure-cycle.elna +++ b/testsuite/fail_compilation/procedure-cycle.elna @@ -1,3 +1,4 @@ type A = proc() -> A (* @Error Type declaration forms a cycle: A -> A *) + end. diff --git a/testsuite/fail_compilation/record-base-cycle-indirect.elna b/testsuite/fail_compilation/record-base-cycle-indirect.elna index 412e6ea..1ea6ca5 100644 --- a/testsuite/fail_compilation/record-base-cycle-indirect.elna +++ b/testsuite/fail_compilation/record-base-cycle-indirect.elna @@ -9,5 +9,6 @@ type var v: A +program() begin end. diff --git a/testsuite/fail_compilation/record-base-cycle.elna b/testsuite/fail_compilation/record-base-cycle.elna index f3bcb20..8af254d 100644 --- a/testsuite/fail_compilation/record-base-cycle.elna +++ b/testsuite/fail_compilation/record-base-cycle.elna @@ -1,4 +1,5 @@ type R = record(R) (* @Error Type declaration forms a cycle: R -> R *) end + end. diff --git a/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna b/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna index 85c93c1..fbba47c 100644 --- a/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna +++ b/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna @@ -9,6 +9,7 @@ type var c: Child +program() begin c := Child{a: "wrong", b: 9} (* @Error Expected type 'Int', but got '\[\]const Word8' *) end. diff --git a/testsuite/fail_compilation/record_duplicate_field.elna b/testsuite/fail_compilation/record_duplicate_field.elna index b98f990..5cf69a9 100644 --- a/testsuite/fail_compilation/record_duplicate_field.elna +++ b/testsuite/fail_compilation/record_duplicate_field.elna @@ -4,5 +4,4 @@ type x: Int (* @Error Record already has a field named 'x' *) end -begin end. diff --git a/testsuite/fail_compilation/record_duplicate_field_import_base/sut.elna b/testsuite/fail_compilation/record_duplicate_field_import_base/sut.elna index 7530017..58f2f3d 100644 --- a/testsuite/fail_compilation/record_duplicate_field_import_base/sut.elna +++ b/testsuite/fail_compilation/record_duplicate_field_import_base/sut.elna @@ -6,5 +6,4 @@ type z: Int end -begin end. diff --git a/testsuite/fail_compilation/redefined_variable.elna b/testsuite/fail_compilation/redefined_variable.elna index 9cf8c24..905f6ed 100644 --- a/testsuite/fail_compilation/redefined_variable.elna +++ b/testsuite/fail_compilation/redefined_variable.elna @@ -2,5 +2,4 @@ var x: Int x: Int (* @Error Symbol 'x' has been already defined *) -begin end. diff --git a/testsuite/fail_compilation/reference_call_result_field.elna b/testsuite/fail_compilation/reference_call_result_field.elna index 5051cc8..2a721f4 100644 --- a/testsuite/fail_compilation/reference_call_result_field.elna +++ b/testsuite/fail_compilation/reference_call_result_field.elna @@ -13,6 +13,7 @@ begin result.x := 1 return result +program() begin p := @make().x (* @Error Expression of type 'Int' is not addressable *) end. diff --git a/testsuite/fail_compilation/reference_literal.elna b/testsuite/fail_compilation/reference_literal.elna index 1967243..1eef82f 100644 --- a/testsuite/fail_compilation/reference_literal.elna +++ b/testsuite/fail_compilation/reference_literal.elna @@ -1,6 +1,7 @@ var p: ^Int +program() begin p := @5 (* @Error Expression of type 'Int' is not addressable *) end. diff --git a/testsuite/fail_compilation/reference_slicing.elna b/testsuite/fail_compilation/reference_slicing.elna index fac8ec6..078b48a 100644 --- a/testsuite/fail_compilation/reference_slicing.elna +++ b/testsuite/fail_compilation/reference_slicing.elna @@ -2,6 +2,7 @@ var s: [3]Int p: ^Int +program() begin p := @s[1 to 2] (* @Error Expression of type '\[\]Int' is not addressable *) end. diff --git a/testsuite/fail_compilation/slice-cycle.elna b/testsuite/fail_compilation/slice-cycle.elna index 39eb7db..fe0a3e1 100644 --- a/testsuite/fail_compilation/slice-cycle.elna +++ b/testsuite/fail_compilation/slice-cycle.elna @@ -1,3 +1,4 @@ type A = []A (* @Error Type declaration forms a cycle: A -> A *) + end. diff --git a/testsuite/fail_compilation/while_condition.elna b/testsuite/fail_compilation/while_condition.elna index 1e17489..bd54796 100644 --- a/testsuite/fail_compilation/while_condition.elna +++ b/testsuite/fail_compilation/while_condition.elna @@ -1,3 +1,4 @@ +program() begin while 1 do (* @Error Condition must be a boolean expression, but got 'Int' *) end -- cgit v1.2.3