aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch12.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/sem_ch12.adb')
-rw-r--r--gcc/ada/sem_ch12.adb16
1 files changed, 11 insertions, 5 deletions
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 470f5ed..5e8e6dc 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -8090,16 +8090,22 @@ package body Sem_Ch12 is
begin
return (Base_Type (T) = Base_Type (Act_T)
--- why is the and then commented out here???
--- and then Is_Constrained (T) = Is_Constrained (Act_T)
and then Subtypes_Statically_Match (T, Act_T))
or else (Is_Class_Wide_Type (Gen_T)
and then Is_Class_Wide_Type (Act_T)
and then
- Subtypes_Match (
- Get_Instance_Of (Root_Type (Gen_T)),
- Root_Type (Act_T)));
+ Subtypes_Match
+ (Get_Instance_Of (Root_Type (Gen_T)),
+ Root_Type (Act_T)))
+
+ or else
+ ((Ekind (Gen_T) = E_Anonymous_Access_Subprogram_Type
+ or else Ekind (Gen_T) = E_Anonymous_Access_Type)
+ and then Ekind (Act_T) = Ekind (Gen_T)
+ and then
+ Subtypes_Statically_Match
+ (Designated_Type (Gen_T), Designated_Type (Act_T)));
end Subtypes_Match;
-----------------------------------------