[multiple changes]

2013-10-14  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb (Analyze_Global_Item): Allow
	references to enclosing formal parameters.

2013-10-14  Thomas Quinot  <quinot@adacore.com>

	* einfo.adb (Equivalent_Type): Add missing case
	E_Access_Subprogram_Type in guard (for remote access to
	subprograms) * sem_ch8.adb (Find_Direct_Name, Find_Expanded_Name):
	Add missing guards to account for the presence of RAS types
	that have already been replaced with the corresponding fat
	pointer type.

From-SVN: r203523
This commit is contained in:
Arnaud Charlet 2013-10-14 14:35:51 +02:00
parent 54e28df21a
commit d1d81616ec
4 changed files with 25 additions and 5 deletions

View File

@ -1,3 +1,17 @@
2013-10-14 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Analyze_Global_Item): Allow
references to enclosing formal parameters.
2013-10-14 Thomas Quinot <quinot@adacore.com>
* einfo.adb (Equivalent_Type): Add missing case
E_Access_Subprogram_Type in guard (for remote access to
subprograms) * sem_ch8.adb (Find_Direct_Name, Find_Expanded_Name):
Add missing guards to account for the presence of RAS types
that have already been replaced with the corresponding fat
pointer type.
2013-10-14 Hristian Kirtchev <kirtchev@adacore.com>
* aspects.adb: Add an entry in table Canonical_Aspect for

View File

@ -1112,6 +1112,7 @@ package body Einfo is
pragma Assert
(Ekind_In (Id, E_Class_Wide_Type,
E_Class_Wide_Subtype,
E_Access_Subprogram_Type,
E_Access_Protected_Subprogram_Type,
E_Anonymous_Access_Protected_Subprogram_Type,
E_Access_Subprogram_Type,

View File

@ -4987,6 +4987,7 @@ package body Sem_Ch8 is
if Comes_From_Source (N)
and then Is_Remote_Access_To_Subprogram_Type (E)
and then Ekind (E) = E_Access_Subprogram_Type
and then Expander_Active
and then Get_PCS_Name /= Name_No_DSA
then
@ -5488,6 +5489,7 @@ package body Sem_Ch8 is
<<Found>>
if Comes_From_Source (N)
and then Is_Remote_Access_To_Subprogram_Type (Id)
and then Ekind (Id) = E_Access_Subprogram_Type
and then Present (Equivalent_Type (Id))
then
-- If we are not actually generating distribution code (i.e. the

View File

@ -1428,13 +1428,16 @@ package body Sem_Prag is
if Present (Item_Id) then
-- A global item cannot reference a formal parameter. Do this
-- check first to provide a better error diagnostic.
-- A global item may denote a formal parameter of an enclosing
-- subprogram. Do this check first to provide a better error
-- diagnostic.
if Is_Formal (Item_Id) then
Error_Msg_N
("global item cannot reference formal parameter", Item);
return;
if Scope (Item_Id) = Subp_Id then
Error_Msg_N
("global item cannot reference formal parameter", Item);
return;
end if;
-- The only legal references are those to abstract states and
-- variables.