diff mbox series

[Ada] Propagate Has_Inherit{able,ed}_Invariants to base types

Message ID 20220602090850.GA1010571@adacore.com
State New
Headers show
Series [Ada] Propagate Has_Inherit{able,ed}_Invariants to base types | expand

Commit Message

Pierre-Marie de Rodat June 2, 2022, 9:08 a.m. UTC
The two flags apply to base types only like Has_Own_Invariants.

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

gcc/ada/

	* sem_util.adb (Propagate_DIC_Attributes): Add ??? comment.
	(Propagate_Invariant_Attributes): Likewise.  Propagate the
	Has_Inheritable_Invariants and Has_Inherited_Invariants to
	the base type of the target type.
diff mbox series

Patch

diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -27312,7 +27312,7 @@  package body Sem_Util is
          --  The setting of the attributes is intentionally conservative. This
          --  prevents accidental clobbering of enabled attributes. We need to
          --  call Base_Type twice, because it is sometimes not set to an actual
-         --  base type.
+         --  base type???
 
          if Has_Inherited_DIC (From_Typ) then
             Set_Has_Inherited_DIC (Base_Type (Base_Type (Typ)));
@@ -27362,14 +27362,14 @@  package body Sem_Util is
          --  The setting of the attributes is intentionally conservative. This
          --  prevents accidental clobbering of enabled attributes. We need to
          --  call Base_Type twice, because it is sometimes not set to an actual
-         --  base type.
+         --  base type???
 
          if Has_Inheritable_Invariants (From_Typ) then
-            Set_Has_Inheritable_Invariants (Typ);
+            Set_Has_Inheritable_Invariants (Base_Type (Base_Type (Typ)));
          end if;
 
          if Has_Inherited_Invariants (From_Typ) then
-            Set_Has_Inherited_Invariants (Typ);
+            Set_Has_Inherited_Invariants (Base_Type (Base_Type (Typ)));
          end if;
 
          if Has_Own_Invariants (From_Typ) then