[Ada] Errors missed on ACATS test B650007
This ACATS test shows that we need to call Is_Immutably_Limited_Type in Analyze_Function_Return and also that we have a latent bug in Is_Immutably_Limited_Type which shouldn't look through private types. gcc/ada/ * sem_aux.adb (Is_Immutably_Limited_Type): Do not look through private types as per RM 7.5(8.1). * sem_ch6.adb (Analyze_Function_Return): Use Is_Immutably_Limited_Type as per RM 6.5(5.10).
This commit is contained in:
parent
9af8c27f09
commit
5b0e8d6937
|
@ -1059,15 +1059,7 @@ package body Sem_Aux is
|
|||
end if;
|
||||
|
||||
else
|
||||
declare
|
||||
Utyp : constant Entity_Id := Underlying_Type (Btype);
|
||||
begin
|
||||
if No (Utyp) then
|
||||
return False;
|
||||
else
|
||||
return Is_Immutably_Limited_Type (Utyp);
|
||||
end if;
|
||||
end;
|
||||
return False;
|
||||
end if;
|
||||
|
||||
elsif Is_Concurrent_Type (Btype) then
|
||||
|
|
|
@ -1566,17 +1566,18 @@ package body Sem_Ch6 is
|
|||
|
||||
-- Check RM 6.5 (5.9/3)
|
||||
|
||||
if Has_Aliased then
|
||||
if Has_Aliased and then not Is_Immutably_Limited_Type (R_Type) then
|
||||
if Ada_Version < Ada_2012
|
||||
and then Warn_On_Ada_2012_Compatibility
|
||||
then
|
||||
Error_Msg_N
|
||||
("ALIASED only allowed for limited return objects "
|
||||
& "in Ada 2012?y?", N);
|
||||
("ALIASED only allowed for immutably limited return " &
|
||||
"objects in Ada 2012?y?", N);
|
||||
|
||||
elsif not Is_Limited_View (R_Type) then
|
||||
else
|
||||
Error_Msg_N
|
||||
("ALIASED only allowed for limited return objects", N);
|
||||
("ALIASED only allowed for immutably limited return " &
|
||||
"objects", N);
|
||||
end if;
|
||||
end if;
|
||||
|
||||
|
|
Loading…
Reference in New Issue