From df51f9c4ee0ee4ac22206513bcd60e6928b7eaeb Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Tue, 25 Aug 2026 13:31:38 +0200 Subject: Fix compatible procedure cast --- gcc/gcc/elna-generic.cc | 1 + testsuite/runnable/procedure_cast.elna | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 testsuite/runnable/procedure_cast.elna diff --git a/gcc/gcc/elna-generic.cc b/gcc/gcc/elna-generic.cc index b657e92..659a8c1 100644 --- a/gcc/gcc/elna-generic.cc +++ b/gcc/gcc/elna-generic.cc @@ -130,6 +130,7 @@ namespace elna::gcc tree cast_target = get_inner_alias(expression->type_decoration, this->symbols); expression->value().accept(this); + this->current_expression = prepare_rvalue(this->current_expression); const location_t cast_location = get_location(&expression->position()); auto source_slice = resolve_underlying_type(expression->value().type_decoration) .get(); diff --git a/testsuite/runnable/procedure_cast.elna b/testsuite/runnable/procedure_cast.elna new file mode 100644 index 0000000..27977e1 --- /dev/null +++ b/testsuite/runnable/procedure_cast.elna @@ -0,0 +1,9 @@ +var cb: proc(x: ^Char): Int + +proc probe_int(x: ^Int): Int +return 42 + +begin + cb := cast(probe_int: proc(x: ^Char): Int); + assert(cb(nil) = 42) +end. -- cgit v1.2.3