[Ada] Incorrect accessibility checks on functions calls

2020-06-15  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_res.adb (Valid_Conversion): Add missing condition to
	trigger proper static accessiblity failiures when the target
	type is an anonymous access.
This commit is contained in:
Justin Squirek 2020-03-30 05:35:22 -04:00 committed by Pierre-Marie de Rodat
parent 50188982c8
commit f142237e2f

View File

@ -13239,13 +13239,16 @@ package body Sem_Res is
-- Check if the operand is deeper than the target type, taking
-- care to avoid the case where we are converting a result of a
-- function returning an anonymous access type since the "master
-- of the call" would be target type of the conversion in all
-- cases - see RM 10.3/3.
-- of the call" would be target type of the conversion unless
-- the target type is anonymous access as well - see RM 3.10.2
-- (10.3/3).
elsif Type_Access_Level (Opnd_Type) >
Deepest_Type_Access_Level (Target_Type)
and then not (Nkind (Associated_Node_For_Itype (Opnd_Type)) =
N_Function_Specification)
and then (Nkind (Associated_Node_For_Itype (Opnd_Type)) /=
N_Function_Specification
or else Ekind (Target_Type) in
Anonymous_Access_Kind)
then
-- In an instance, this is a run-time check, but one we know
-- will fail, so generate an appropriate warning. The raise