[Ada] Spurious error on private task derivation

Pierre-Marie de Rodat derodat@adacore.com
Thu May 24 13:05:00 GMT 2018


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

Tested on x86_64-pc-linux-gnu, committed on trunk

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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: patch.diff
Type: text/x-diff
Size: 1529 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20180524/306ed351/attachment.bin>


More information about the Gcc-patches mailing list