aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/sem_util.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-01-27 17:43:29 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2014-01-27 17:43:29 +0100
commit00ba7be81367fd082166105ab3e8b8f43d04051c (patch)
tree4afa06847d2f11a96343bc725c5145358cacf44c /gcc/ada/sem_util.adb
parent8fdafe44be001fa59172d7a28626d4babdc24b7b (diff)
downloadgcc-00ba7be81367fd082166105ab3e8b8f43d04051c.zip
gcc-00ba7be81367fd082166105ab3e8b8f43d04051c.tar.gz
gcc-00ba7be81367fd082166105ab3e8b8f43d04051c.tar.bz2
[multiple changes]
2014-01-27 Robert Dewar <dewar@adacore.com> * exp_smem.adb: Minor reformatting. 2014-01-27 Thomas Quinot <quinot@adacore.com> * a-calfor.ads: Fix incorrect reference to operator "-" in comment. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * sem_res.adb (Make_Call_Into_Operator): In ASIS mode, relocate nodes for operands to the original node for the call, to preserve Original_Node pointers within the resolved operands, given that they may have been rewritten as well. Previous approach copied the operands into a new tree and lost those pointers. 2014-01-27 Claire Dross <dross@adacore.com> * a-cofove.adb, a-cofove.ads: Add Strict_Equal function to the API. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * sem_util.adb (Check_Internal_Protected_Use): A call through an anonymous access parameter of the current protected function is not a potential modification of the current object. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * a-cobove.adb (Reserve_Capacity): Procedure raises Capacity_Error, not Constraint_Error, when request cannot be satisfied. 2014-01-27 Vincent Celier <celier@adacore.com> * a-coorma.adb, a-cohama.adb (Assign): Copy the Source to the Target, not the Target to itself. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * exp_ch4.adb (Expand_Concatenate): If the target of the concatenation is a library-level entity, always use the off-line version of concatenation, regardless of optimization level. This is space-efficient, and prevents linking problems when some units are compiled with different optimization levels. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * sem_ch5.adb: Code clean up. 2014-01-27 Ed Schonberg <schonberg@adacore.com> * par-ch5.adb (P_Iterator_Specification): Improve error recovery when an array or container iterator includes a subtype indication, which is only legal in an element iterator. From-SVN: r207141
Diffstat (limited to 'gcc/ada/sem_util.adb')
-rw-r--r--gcc/ada/sem_util.adb14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index d41eb3a..284872b 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -2240,7 +2240,19 @@ package body Sem_Util is
end loop;
if Scope (Nam) = Prot and then Ekind (Nam) /= E_Function then
- if Nkind (N) = N_Subprogram_Renaming_Declaration then
+
+ -- An indirect function call (e.g. a callback within a protected
+ -- function body) is not statically illegal. If the access type is
+ -- anonymous and is the type of an access parameter, the scope of Nam
+ -- will be the protected type, but it is not a protected operation.
+
+ if Ekind (Nam) = E_Subprogram_Type
+ and then
+ Nkind (Associated_Node_For_Itype (Nam)) = N_Function_Specification
+ then
+ null;
+
+ elsif Nkind (N) = N_Subprogram_Renaming_Declaration then
Error_Msg_N
("within protected function cannot use protected "
& "procedure in renaming or as generic actual", N);