* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@203523
138bc75d-0d04-0410-961f-
82ee72b054a4
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
Initializes.
* aspects.ads: Add entries in tables Aspect_Id, Aspect_Argument,
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,
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
<<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
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.