aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorEd Schonberg <schonberg@adacore.com>2019-09-17 08:00:07 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-09-17 08:00:07 +0000
commita9a08e6d331cb454741d2b089cdedaefedfd5271 (patch)
treee16bb4785cb0191756fb6d85af223dc5a7ba4537 /gcc/ada
parent01e44bfa81a3423d55e5d624e2c7241daedf44e4 (diff)
downloadgcc-a9a08e6d331cb454741d2b089cdedaefedfd5271.zip
gcc-a9a08e6d331cb454741d2b089cdedaefedfd5271.tar.gz
gcc-a9a08e6d331cb454741d2b089cdedaefedfd5271.tar.bz2
[Ada] In a generic use Presanalyze_Spec_Expression on Predicates
When verifying that the meaning of an aspect has not changed between the freeze point of the entity and the end of the declarations, we analkyze a copy of the expression to verify its conformance to previous analysis. If the expression contains overloaded references, these have to be resolved, which is not done if the expression is only preanalyzed. This applies in particular to expressions in predicates. 2019-09-17 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a generic context, for a Predicate aspect, use Preanalyze_Spec_Expression to verify conformance. gcc/testsuite/ * gnat.dg/predicate13.adb, gnat.dg/predicate13.ads: New testcase. From-SVN: r275778
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/sem_ch13.adb2
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 1d728fe..94877b2 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2019-09-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a
+ generic context, for a Predicate aspect, use
+ Preanalyze_Spec_Expression to verify conformance.
+
2019-09-17 Javier Miranda <miranda@adacore.com>
* sem_ch3.adb (Constrain_Corresponding_Record): Propagate
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index 2538c1d..ef9f965 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -9383,7 +9383,7 @@ package body Sem_Ch13 is
or else A_Id = Aspect_Priority
then
Push_Type (Ent);
- Preanalyze (Freeze_Expr);
+ Preanalyze_Spec_Expression (Freeze_Expr, T);
Pop_Type (Ent);
else
Preanalyze (Freeze_Expr);