[Ada] Compiler rejects legal allocator in record component constraint expression
authorSteve Baird <baird@adacore.com>
Tue, 24 May 2022 23:03:58 +0000 (16:03 -0700)
committerPierre-Marie de Rodat <derodat@adacore.com>
Mon, 4 Jul 2022 07:45:54 +0000 (07:45 +0000)
commit063c8f4c01bc1a5e6960c8624077df7137dc5dad
tree543c17e33905d5c5a3bb934dab64c17093adc330
parentf7c05e82037356ac4610e9e5d1365b345a17d0f7
[Ada] Compiler rejects legal allocator in record component constraint expression

In some cases when a legal allocator which defines a new subtype for the
allocated object occurs as part of a record component constraint
expression, the compiler would incorrectly reject the allocator.

gcc/ada/

* sem_ch4.adb (Analyze_Allocator): After calling Insert_Action
to insert a subtype declaration associated with an allocator,
the subtype declaration will usually be analyzed. But not
always. Add an explicit call to Preanalyze to cope with the
unusual case. The subtype declaration must be at least
preanalyzed before the call to Sem_Ch3.Process_Subtype a little
while later, during which we analyze an identifier that refers
to the subtype.
gcc/ada/sem_ch4.adb