`reference to procedure (aoc: array of const);` causes an access violation
## Summary `type Aoc0 = reference to procedure (aoc: array of const);` during compilation causes an internal exception to be raised. ## System Information - **Operating system:** Linux 6.0.9-1.el9.elrepo.x86_64 NAME="AlmaLinux" VERSION="9.1 (Lime Lynx)" - **Processor architecture:** x86-64 - **Compiler version:** 3.3.1-12182-g3b4c396edd - **Device:** Computer ## Steps to reproduce Given the following program: ```pascal program function_reference_array_of_const; {$modeswitch functionreferences} type Aoc0 = reference to procedure (aoc: array of const); type Aoc1 = reference to procedure (var aoc: array of const); type Aoc2 = reference to procedure (constref aoc: array of const); type Aoc3 = reference to procedure (const aoc: array of const); begin end. ``` And without commenting out all the `type Aoc...` lines, when compiled causes the following to occur: ```shell $ fpc aocfr.pas Free Pascal Compiler version 3.3.1 [2022/12/11] for x86_64 Copyright (c) 1993-2022 by Florian Klaempfl and others Target OS: Linux for x86-64 Compiling aocfr.pas aocfr.pas(3,51) Error: Compilation raised exception internally Fatal: Compilation aborted An unhandled exception occurred at $00000000004D7463: EAccessViolation: Access violation $00000000004D7463 Error: /home/dev/fpc_usr/lib/fpc/3.3.1/ppcx64 returned an error exitcode ``` ## Example Project See steps to reproduce. ## What is the current bug behavior? The compiler raises an Access violation exception. ## What is the expected (correct) behavior? Either an error message indicating the program could not be compiled or that the program be compiled. I really feel it should be compiled as `array of const` is a valid function parameter. ## Relevant logs and/or screenshots See steps to reproduce. ## Possible fixes None known, I've not looked that compiler code that is causing the exception to be raised.
issue