[Ada] Spurious error on private task derivation
authorJavier Miranda <miranda@adacore.com>
Thu, 24 May 2018 13:04:29 +0000 (13:04 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Thu, 24 May 2018 13:04:29 +0000 (13:04 +0000)
commit0b5252ac694ea0393cc9443ef2cebcab60bab40d
tree73988d7a8919b6e1af5fa6729812a6d95573546c
parent7dcac7d1468a3b5b69f5a04d2ca0919b515fddba
[Ada] Spurious error on private task derivation

The compiler reports a spurious error notifying a missing constraint in the
declaration of a private type with discriminants whose full view is a
derivation of a task type.

After this patch the following test compiles without errors.

package Types1 is
   type Parent (Discr1 : Boolean) is limited private;
private
   task type Parent (Discr1 : Boolean);
end Types1;

with Types1; use Types1;
package Types2 is
   type Child (Discr2 : Boolean) is limited private;
private
   type Child (Discr2 : Boolean) is       -- Test
     new Parent (Discr1 => Discr2);
end Types2;

Command: gcc -c types2.ads

2018-05-24  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_util.adb (Abstract_Interface_List): Add missing support for
private types whose full view is a synchronized type.
* sem_ch3.adb (Build_Derived_Private_Type): Skip building the full
derivation of a private type parent type is a task type with
discriminants as gigi does not use such type directly.

From-SVN: r260644
gcc/ada/ChangeLog
gcc/ada/sem_ch3.adb
gcc/ada/sem_util.adb