diff mbox series

[Ada] Inherited aspects that may be delayed in a parent type

Message ID 20170906100203.GA9425@adacore.com
State New
Headers show
Series [Ada] Inherited aspects that may be delayed in a parent type | expand

Commit Message

Arnaud Charlet Sept. 6, 2017, 10:02 a.m. UTC
This patch fixes an omission in the handling of delayed aspects on derived
types. The type may inherit a representation aspect from its parent, but have
no explicit aspect specifications. At the point it is frozen, the parent is
frozen as well and its explicit aspects have been analyzed. The inherited
aspects of the derived type can then be captured properly.

Tested in ACATS test C35A001.

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

2017-09-06  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Freeze_Entity): For a derived type that has no
	explicit delayed aspects but may inherit delayed aspects from its
	parent type, analyze aspect at freeze point for proper capture
	of an inherited aspect.
diff mbox series

Patch

Index: freeze.adb
===================================================================
--- freeze.adb	(revision 251760)
+++ freeze.adb	(working copy)
@@ -5266,8 +5266,12 @@ 
       --  pragma or attribute definition clause in the tree at this point. We
       --  also analyze the aspect specification node at the freeze point when
       --  the aspect doesn't correspond to pragma/attribute definition clause.
+      --  In addition, a derived type may have inherited aspects that were
+      --  delayed in the parent, so these must also be captured now.
 
-      if Has_Delayed_Aspects (E) then
+      if Has_Delayed_Aspects (E)
+         or else May_Inherit_Delayed_Rep_Aspects (E)
+      then
          Analyze_Aspects_At_Freeze_Point (E);
       end if;