From: Ronan Desplanques <[email protected]>

The old name was wrong because a type is not a subcomponent of itself.
In other words, "is a subcomponent of" is not a reflexive relation. Also,
the old comment implied that the Ekind of the return value was
E_Component; it's actually a type.

gcc/ada/ChangeLog:

        * sem_util.ads (Partially_Visible_Subcomponent): Rename into ...
        (Partially_Visible_Part): ...this. Improve documentation.
        * sem_util.adb: Likewise.
        * sem_ch3.adb (Analyze_Component_Declaration,
        Array_Type_Declaration): Adapt to renaming.
        * sem_ch7.adb (Install_Composite_Operations): Likewise.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/ada/sem_ch3.adb  |  4 ++--
 gcc/ada/sem_ch7.adb  |  2 +-
 gcc/ada/sem_util.adb |  8 +++-----
 gcc/ada/sem_util.ads | 13 +++++++------
 4 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index bc02601fe0c..1f8d86eb631 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -2222,7 +2222,7 @@ package body Sem_Ch3 is
       --  If this component is private (or depends on a private type), flag the
       --  record type to indicate that some operations are not available.
 
-      P := Partially_Visible_Subcomponent (T);
+      P := Partially_Visible_Part (T);
 
       if Present (P) then
 
@@ -6814,7 +6814,7 @@ package body Sem_Ch3 is
          end if;
       end if;
 
-      Priv := Partially_Visible_Subcomponent (Element_Type);
+      Priv := Partially_Visible_Part (Element_Type);
 
       if Present (Priv) then
 
diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
index 90de70d2568..92b8f9a22b8 100644
--- a/gcc/ada/sem_ch7.adb
+++ b/gcc/ada/sem_ch7.adb
@@ -697,7 +697,7 @@ package body Sem_Ch7 is
             if Is_Type (Id)
               and then (Is_Limited_Composite (Id)
                          or else Is_Private_Composite (Id))
-              and then No (Partially_Visible_Subcomponent (Id))
+              and then No (Partially_Visible_Part (Id))
             then
                Set_Is_Limited_Composite (Id, False);
                Set_Is_Private_Composite (Id, False);
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 2590e411f0c..f53fe30da69 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -27004,10 +27004,8 @@ package body Sem_Util is
    -- Partially_Visible_Subcomponent --
    ------------------------------------
 
-   function Partially_Visible_Subcomponent
-     (Type_Id : Entity_Id) return Entity_Id
-   is
-      Ancestor  : constant Entity_Id := Base_Type (Type_Id);
+   function Partially_Visible_Part (Type_Id : Entity_Id) return Entity_Id is
+      Ancestor : constant Entity_Id := Base_Type (Type_Id);
 
       function Trace_Components
         (T     : Entity_Id;
@@ -27091,7 +27089,7 @@ package body Sem_Util is
 
    begin
       return Trace_Components (Type_Id, False);
-   end Partially_Visible_Subcomponent;
+   end Partially_Visible_Part;
 
    ----------------------
    -- Policy_In_Effect --
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index df7296d527f..6934bd42a70 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -3041,12 +3041,13 @@ package Sem_Util is
    --  of the corresponding formal entity, otherwise returns Empty. Also
    --  handles the case of references to renamings of formals.
 
-   function Partially_Visible_Subcomponent
-     (Type_Id : Entity_Id) return Entity_Id;
-   --  If there exist any subcomponents of Type_Id whose types are currently
-   --  only partially visible, returns one such subcomponent. Otherwise returns
-   --  Empty. Used to enforce the rules on visibility of operations on
-   --  composite types, that depend on the full view of the subcomponent types.
+   function Partially_Visible_Part (Type_Id : Entity_Id) return Entity_Id;
+   --  If Type_Id is currently only partially visible, return Type_Id.
+   --  Otherwise, if there exist any subcomponents of Type_Id whose types are
+   --  currently only partially visible, returns the type of one such
+   --  subcomponent. Otherwise returns Empty. Used to enforce the rules on
+   --  visibility of operations on composite types, that depend on the full
+   --  view of the subcomponent types.
    --
    --  We say that a type is "partially visible" when it has a partial view
    --  that is currently visible but no full view that is currently visible.
-- 
2.53.0

Reply via email to