ada: Fix internal error on quantified expression with predicated type
commit674ab59dc50bec6987f133424e4c5a1c5ba52e61
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 15 Feb 2023 14:52:00 +0000 (15 15:52 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 23 May 2023 07:59:04 +0000 (23 09:59 +0200)
tree0fb93c7a0a30b6320b9cfd78b4a6918c31ab7c93
parentea5a7a774a2d5d2759f45c77efa17a91182e614f
ada: Fix internal error on quantified expression with predicated type

The problem is that the special function created by the compiler to check
the predicate does not inherit the public status of the type, because it
is generated as part of the freezing of the quantified expression, which
occurs from within a couple of intermediate internal scopes.

gcc/ada/

* sem_ch13.adb (Build_Predicate_Function_Declaration): Adjust the
commentary to the current implementation.
* sem_util.ads (Current_Scope_No_Loops): Move around.
(Current_Scope_No_Loops_No_Blocks): New declaration.
(Add_Block_Identifier): Fix formatting.
* sem_util.adb (Add_Block_Identifier): Likewise.
(Current_Scope_No_Loops_No_Blocks): New function.
(Set_Public_Status): Call Current_Scope_No_Loops_No_Blocks instead
of Current_Scope to get the current scope.
gcc/ada/sem_ch13.adb
gcc/ada/sem_util.adb
gcc/ada/sem_util.ads