https://gcc.gnu.org/g:2e3d527fe37e2bf8cba74a42d78f2d99f3e7094a
commit r15-4644-g2e3d527fe37e2bf8cba74a42d78f2d99f3e7094a Author: Eric Botcazou <ebotca...@adacore.com> Date: Fri Sep 27 12:19:14 2024 +0200 ada: Fix internal error on function call in class-wide precondition This occurs when the call is to a function that is declared in a package that is nested in the scope where the type declaration is located. gcc/ada/ChangeLog: * freeze.adb (Freeze_Expression.In_Expanded_Body): Also return True for the body of a helper/wrapper built for class-wide preconditions. Diff: --- gcc/ada/freeze.adb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb index 882c026455ec..326b39b05458 100644 --- a/gcc/ada/freeze.adb +++ b/gcc/ada/freeze.adb @@ -8438,6 +8438,14 @@ package body Freeze is then return True; + -- This is the body of a helper/wrapper built for CW preconditions + + elsif Present (Corresponding_Spec (P)) + and then + Present (Class_Preconditions_Subprogram (Corresponding_Spec (P))) + then + return True; + else Id := Defining_Unit_Name (Specification (P));