[Ada] Ada2020: AI12-0027 Access values and unaliased component

gcc/ada/

	* sem_res.adb (Resolve_Actuals): Restore restrictive check on
	view conversions which required matching value of
	Has_Aliased_Components of formals and actuals. Required to avoid
	the regression of ACATS b460005.
This commit is contained in:
Javier Miranda 2020-06-16 05:28:54 -04:00 committed by Pierre-Marie de Rodat
parent 2c3bc159a8
commit 36f0cf4e60
1 changed files with 17 additions and 1 deletions

View File

@ -4118,9 +4118,25 @@ package body Sem_Res is
if Ekind (F) = E_In_Out_Parameter
and then Is_Array_Type (Etype (F))
then
-- In a view conversion, the conversion must be legal in
-- both directions, and thus both component types must be
-- aliased, or neither (4.6 (8)).
-- The extra rule in 4.6 (24.9.2) seems unduly
-- restrictive: the privacy requirement should not apply
-- to generic types, and should be checked in an
-- instance. ARG query is in order ???
if Has_Aliased_Components (Expr_Typ) /=
Has_Aliased_Components (Etype (F))
then
Error_Msg_N
("both component types in a view conversion must be"
& " aliased, or neither", A);
-- Comment here??? what set of cases???
if not Same_Ancestor (Etype (F), Expr_Typ) then
elsif not Same_Ancestor (Etype (F), Expr_Typ) then
-- Check view conv between unrelated by ref array
-- types.