From 26a1b9ad9f347315bc14f2bf3ee064ede51794fc Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 30 Aug 2026 22:36:32 +0200 Subject: Fix record constructor for base records --- .../record_base_constructor_type_mismatch.elna | 14 ++++++++++++++ testsuite/runnable/record_base_constructor.elna | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 testsuite/fail_compilation/record_base_constructor_type_mismatch.elna create mode 100644 testsuite/runnable/record_base_constructor.elna (limited to 'testsuite') diff --git a/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna b/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna new file mode 100644 index 0000000..85c93c1 --- /dev/null +++ b/testsuite/fail_compilation/record_base_constructor_type_mismatch.elna @@ -0,0 +1,14 @@ +type + Base = record + a: Int + end + Child = record(Base) + b: Int + end + +var + c: Child + +begin + c := Child{a: "wrong", b: 9} (* @Error Expected type 'Int', but got '\[\]const Word8' *) +end. diff --git a/testsuite/runnable/record_base_constructor.elna b/testsuite/runnable/record_base_constructor.elna new file mode 100644 index 0000000..86da08a --- /dev/null +++ b/testsuite/runnable/record_base_constructor.elna @@ -0,0 +1,19 @@ +type + Base = record + a: Int + end + Child = record(Base) + b: Int + end + Grandchild = record(Child) + c: Int + end + +var + g: Grandchild := Grandchild{a: 3, b: 5, c: 7} + +begin + assert(g.a = 3); + assert(g.b = 5); + assert(g.c = 7) +end. -- cgit v1.2.3