[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