[Ada] Avoid crash in GNATprove_Mode on allocator inside type
authorYannick Moy <moy@adacore.com>
Tue, 13 Aug 2019 08:07:29 +0000 (08:07 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 13 Aug 2019 08:07:29 +0000 (08:07 +0000)
commitebad47fca4b9e8c33aea489c8fc2a633e4c36dd3
tree642cc8ed29788924494a357c07ec9b43b9047c0c
parent1788bf118c1c97a2e3cb8c0526ffe617859eb7d4
[Ada] Avoid crash in GNATprove_Mode on allocator inside type

In the special mode for GNATprove, subtypes should be declared for
allocators when constraints are used. This was done previously but it
does not work inside spec expressions, as the declaration is not
inserted and analyzed in the AST in that case, leading to a later crash
on an incomplete entity. Thus, no declaration should be created in such
a case, letting GNATprove later reject such code due to the use of an
allocator in an interfering context.

2019-08-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

* sem_ch4.adb (Analyze_Allocator): Do not insert subtype
declaration for allocator inside a spec expression.

gcc/testsuite/

* gnat.dg/allocator2.adb, gnat.dg/allocator2.ads: New testcase.

From-SVN: r274345
gcc/ada/ChangeLog
gcc/ada/sem_ch4.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/allocator2.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/allocator2.ads [new file with mode: 0644]