aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJavier Miranda <miranda@adacore.com>2019-12-13 09:05:28 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-12-13 09:05:28 +0000
commitc90e1eca3782b667c081e08dad03aee5b4f16276 (patch)
treefeac080fee7ac02c28a6cb9c04f4c1504b5d9433 /gcc
parente1e1e53a4861f5addee43088de14dadf47892f23 (diff)
downloadgcc-c90e1eca3782b667c081e08dad03aee5b4f16276.zip
gcc-c90e1eca3782b667c081e08dad03aee5b4f16276.tar.gz
gcc-c90e1eca3782b667c081e08dad03aee5b4f16276.tar.bz2
[Ada] Spurious error on precondition of subprogram instantiation
2019-12-13 Javier Miranda <miranda@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Specification): Processing a precondition, if the expression is of the form A and then B, do not generate separate Pre/Post aspects for the separate clases when we are processing a generic unit. Required to avoid reporting spurious visibility errors on the instantiations. From-SVN: r279365
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog8
-rw-r--r--gcc/ada/sem_ch13.adb5
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 7282db4..bfc9be1 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,11 @@
+2019-12-13 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specification): Processing a
+ precondition, if the expression is of the form A and then B, do
+ not generate separate Pre/Post aspects for the separate clases
+ when we are processing a generic unit. Required to avoid
+ reporting spurious visibility errors on the instantiations.
+
2019-12-13 Eric Botcazou <ebotcazou@adacore.com>
* sem_res.adb (Resolve_Actuals): Give canonical error for
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index b2b9efa..e266af9 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -3479,11 +3479,14 @@ package body Sem_Ch13 is
-- don't do this in GNATprove mode, because it brings no
-- benefit for proof and causes annoynace for flow analysis,
-- which prefers to be as close to the original source code
- -- as possible.
+ -- as possible. Also we don't do this when analyzing generic
+ -- units since it causes spurious visibility errors in the
+ -- preanalysis of instantiations.
if not (ASIS_Mode or GNATprove_Mode)
and then (Pname = Name_Postcondition
or else not Class_Present (Aspect))
+ and then not Inside_A_Generic
then
while Nkind (Expr) = N_And_Then loop
Insert_After (Aspect,