[Ada] Spurious visibility error on dynamic_predicate aspect in generic
authorEd Schonberg <schonberg@adacore.com>
Mon, 8 Jul 2019 08:12:46 +0000 (08:12 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 8 Jul 2019 08:12:46 +0000 (08:12 +0000)
commite87f67eb5d8671bc7c98dbf10106fda34114b293
tree53fc10cf58e2116f346a3564daa34930c9c264df
parentc19713b78d24d7d991d942e3de8f33585088bb16
[Ada] Spurious visibility error on dynamic_predicate aspect in generic

This patch fixes a spurious error when verifying that the visibility of
the expression of an aspect has not changed between the freeze point of
the entity to which it applies, and the end of the enclosing declarative
part. If the entity is a composite type its components must be made
directly visible for the analysis of the expression. In a generic
context this must be done explicitly at the end of the declarative part.

2019-07-08  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an
unanalized aspect in a generic context that has not been
analyzed yet, if the aspect applies to a type, place the type on
the scope stack to make its components visible, before checking
conformance with the version of the expression analyzed at the
freeze point.

gcc/testsuite/

* gnat.dg/predicate8.adb, gnat.dg/predicate8_pkg.adb,
gnat.dg/predicate8_pkg.ads: New testcase.

From-SVN: r273197
gcc/ada/ChangeLog
gcc/ada/sem_ch13.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/predicate8.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/predicate8_pkg.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/predicate8_pkg.ads [new file with mode: 0644]