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