[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:
parent
54e28df21a
commit
d1d81616ec
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue