[Ada] Spurious error on precondition of subprogram instantiation
authorJavier Miranda <miranda@adacore.com>
Fri, 13 Dec 2019 09:05:28 +0000 (09:05 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Fri, 13 Dec 2019 09:05:28 +0000 (09:05 +0000)
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

gcc/ada/ChangeLog
gcc/ada/sem_ch13.adb

index 7282db42a2dc4db56f62aa9bfe690b86a5acb927..bfc9be15be2a9e1b445f16e61fe75e02b7c13356 100644 (file)
@@ -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
index b2b9efa2978e4a8b055f80a48894d648ad8277a9..e266af9265d805737b1359ab93245d43efe17a19 100644 (file)
@@ -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,