[gcc(refs/users/aoliva/heads/testme)] [Ada] AI12-0204 Renaming of a prefixed view
Alexandre Oliva
aoliva@gcc.gnu.org
Mon Jun 8 20:20:28 GMT 2020
https://gcc.gnu.org/g:63408d0eb2f6fd33b6b423396e3d80d54f3235ae
commit 63408d0eb2f6fd33b6b423396e3d80d54f3235ae
Author: Arnaud Charlet <charlet@adacore.com>
Date: Mon Feb 24 05:41:00 2020 -0500
[Ada] AI12-0204 Renaming of a prefixed view
2020-06-08 Arnaud Charlet <charlet@adacore.com>
gcc/ada/
* sem_ch5.adb: Fix typo.
* sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that
the prefix of a prefixed view must be renamable as an object.
Diff:
---
gcc/ada/sem_ch5.adb | 2 +-
gcc/ada/sem_ch8.adb | 18 +++++++++++++++++-
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index e6766c75685..0dfd8b4a52e 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -2390,7 +2390,7 @@ package body Sem_Ch5 is
-- AI12-0047 stipulates that the domain (array or container)
-- cannot be a component that depends on a discriminant if the
-- enclosing object is mutable, to prevent a modification of the
- -- dowmain of iteration in the course of an iteration.
+ -- domain of iteration in the course of an iteration.
-- If the object is an expression it has been captured in a
-- temporary, so examine original node.
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 4d9b5ba08b6..79099efc29c 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -1826,6 +1826,7 @@ package body Sem_Ch8 is
Is_Body : Boolean)
is
Old_S : Entity_Id;
+ Nam : Entity_Id;
function Conforms
(Subp : Entity_Id;
@@ -1902,7 +1903,7 @@ package body Sem_Ch8 is
end if;
if Old_S = Any_Id then
- Error_Msg_N (" no subprogram or entry matches specification", N);
+ Error_Msg_N ("no subprogram or entry matches specification", N);
else
if Is_Body then
@@ -1920,6 +1921,21 @@ package body Sem_Ch8 is
Error_Msg_N ("mode conformance error in renaming", N);
end if;
+ -- AI12-0204: The prefix of a prefixed view that is renamed or
+ -- passed as a formal subprogram must be renamable as an object.
+
+ Nam := Prefix (Name (N));
+
+ if Is_Object_Reference (Nam) then
+ if Is_Dependent_Component_Of_Mutable_Object (Nam) then
+ Error_Msg_N
+ ("illegal renaming of discriminant-dependent component",
+ Nam);
+ end if;
+ else
+ Error_Msg_N ("expect object name in renaming", Nam);
+ end if;
+
-- Enforce the rule given in (RM 6.3.1 (10.1/2)): a prefixed
-- view of a subprogram is intrinsic, because the compiler has
-- to generate a wrapper for any call to it. If the name in a
More information about the Gcc-cvs
mailing list