sem_util.adb (Is_Object_Reference): An indexed or selected component whose prefix...
authorEd Schonberg <schonberg@adacore.com>
Mon, 4 Jul 2005 13:30:32 +0000 (15:30 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 4 Jul 2005 13:30:32 +0000 (15:30 +0200)
2005-07-04  Ed Schonberg  <schonberg@adacore.com>

* sem_util.adb (Is_Object_Reference): An indexed or selected component
whose prefix is an implicit dereference is an object reference. Removes
spurious errors when compiling with -gnatc.

From-SVN: r101592

gcc/ada/sem_util.adb

index 04107a5c9df1158d40a974cb8ca90a95de0250ae..4d3577e8ea02cd4622b089bee297c1c7e800935f 100644 (file)
@@ -4074,7 +4074,9 @@ package body Sem_Util is
       else
          case Nkind (N) is
             when N_Indexed_Component | N_Slice =>
-               return Is_Object_Reference (Prefix (N));
+               return
+                 Is_Object_Reference (Prefix (N))
+                   or else Is_Access_Type (Etype (Prefix (N)));
 
             --  In Ada95, a function call is a constant object
 
@@ -4089,7 +4091,9 @@ package body Sem_Util is
             when N_Selected_Component =>
                return
                  Is_Object_Reference (Selector_Name (N))
-                   and then Is_Object_Reference (Prefix (N));
+                   and then
+                     (Is_Object_Reference (Prefix (N))
+                        or else Is_Access_Type (Etype (Prefix (N))));
 
             when N_Explicit_Dereference =>
                return True;