]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[Ada] Complete support for prefixed call on subtypes/derived types
authorYannick Moy <moy@adacore.com>
Tue, 26 Oct 2021 10:21:40 +0000 (12:21 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Tue, 9 Nov 2021 09:44:47 +0000 (09:44 +0000)
gcc/ada/

* sem_ch3.adb (Analyze_Subtype_Declaration,
Derived_Type_Declaration): Initialize list of primitive
operations when Extensions_Allowed.

gcc/ada/sem_ch3.adb

index ff3da3859437da8d61d3bbb93ca6d634cfb96579..e24ca8c6ce8d7b6ab916c63fe61bbe4018f01a85 100644 (file)
@@ -5755,6 +5755,15 @@ package body Sem_Ch3 is
                   if Is_Tagged_Type (Id) then
                      Set_No_Tagged_Streams_Pragma
                        (Id, No_Tagged_Streams_Pragma (T));
+                  end if;
+
+                  --  For tagged types, or when prefixed-call syntax is allowed
+                  --  for untagged types, initialize the list of primitive
+                  --  operations to an empty list.
+
+                  if Is_Tagged_Type (Id)
+                    or else Extensions_Allowed
+                  then
                      Set_Direct_Primitive_Operations (Id, New_Elmt_List);
                   end if;
 
@@ -17199,8 +17208,12 @@ package body Sem_Ch3 is
          Set_Etype        (T, Any_Type);
          Set_Scalar_Range (T, Scalar_Range (Any_Type));
 
-         if Is_Tagged_Type (T)
-           and then Is_Record_Type (T)
+         --  For tagged types, or when prefixed-call syntax is allowed for
+         --  untagged types, initialize the list of primitive operations to
+         --  an empty list.
+
+         if (Is_Tagged_Type (T) and then Is_Record_Type (T))
+           or else Extensions_Allowed
          then
             Set_Direct_Primitive_Operations (T, New_Elmt_List);
          end if;