diff mbox

[Ada] Extraction of components/discriminants of concurrent types

Message ID 20151026115527.GA122974@adacore.com
State New
Headers show

Commit Message

Arnaud Charlet Oct. 26, 2015, 11:55 a.m. UTC
This patch allows First_Component and First_Component_Or_Discriminant to apply
to protected and task types. No change in behavior, no test needed. The patch
is aimed at clients of the compiler front-end.

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

2015-10-26  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (First_Component): Update the assertion to allow
	for concurrent types.
	(First_Component_Or_Discriminant): Update the assertion to allow for
	concurrent types.
	* einfo.ads: Update the documentation of attributes First_Component
	and First_Component_Or_Discriminant along with uses in entities.
diff mbox

Patch

Index: einfo.adb
===================================================================
--- einfo.adb	(revision 229333)
+++ einfo.adb	(working copy)
@@ -6926,7 +6926,9 @@ 
 
    begin
       pragma Assert
-        (Is_Record_Type (Id) or else Is_Incomplete_Or_Private_Type (Id));
+        (Is_Concurrent_Type (Id)
+          or else Is_Incomplete_Or_Private_Type (Id)
+          or else Is_Record_Type (Id));
 
       Comp_Id := First_Entity (Id);
       while Present (Comp_Id) loop
@@ -6946,8 +6948,9 @@ 
 
    begin
       pragma Assert
-        (Is_Record_Type (Id)
+        (Is_Concurrent_Type (Id)
           or else Is_Incomplete_Or_Private_Type (Id)
+          or else Is_Record_Type (Id)
           or else Has_Discriminants (Id));
 
       Comp_Id := First_Entity (Id);
Index: einfo.ads
===================================================================
--- einfo.ads	(revision 229343)
+++ einfo.ads	(working copy)
@@ -1286,14 +1286,15 @@ 
 --       objects.
 
 --    First_Component (synthesized)
---       Applies to record types. Returns the first component by following the
---       chain of declared entities for the record until a component is found
---       (one with an Ekind of E_Component). The discriminants are skipped. If
---       the record is null, then Empty is returned.
+--       Applies to incomplete, private, protected, record and task types.
+--       Returns the first component by following the chain of declared
+--       entities for the type a component is found (one with an Ekind of
+--       E_Component). The discriminants are skipped. If the record is null,
+--       then Empty is returned.
 
 --    First_Component_Or_Discriminant (synthesized)
---      Similar to First_Component, but discriminants are not skipped, so will
---      find the first discriminant if discriminants are present.
+--       Similar to First_Component, but discriminants are not skipped, so will
+--       find the first discriminant if discriminants are present.
 
 --    First_Entity (Node17)
 --       Defined in all entities which act as scopes to which a list of
@@ -6263,6 +6264,8 @@ 
    --    SPARK_Pragma_Inherited              (Flag265)
    --    Uses_Lock_Free                      (Flag188)
    --    Uses_Sec_Stack                      (Flag95)   ???
+   --    First_Component                     (synth)
+   --    First_Component_Or_Discriminant     (synth)
    --    Has_Entries                         (synth)
    --    Has_Interrupt_Handler               (synth)
    --    Number_Entries                      (synth)
@@ -6410,6 +6413,8 @@ 
    --    SPARK_Aux_Pragma_Inherited          (Flag266)
    --    SPARK_Pragma_Inherited              (Flag265)
    --    Uses_Sec_Stack                      (Flag95)   ???
+   --    First_Component                     (synth)
+   --    First_Component_Or_Discriminant     (synth)
    --    Has_Entries                         (synth)
    --    Number_Entries                      (synth)
    --    (plus type attributes)