sem_ch4.adb (Try_Primitive_Operation, [...]): Analyze the object that is accessible...
authorJavier Miranda <miranda@adacore.com>
Fri, 18 Mar 2005 11:51:32 +0000 (12:51 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Fri, 18 Mar 2005 11:51:32 +0000 (12:51 +0100)
2005-03-17  Javier Miranda  <miranda@adacore.com>

* sem_ch4.adb (Try_Primitive_Operation, Class_Wide_Operation and
Try_Object_Operation): Analyze the object that is accessible
through the prefix of the subprogram call before we apply
the transformation of the object-operation notation.

From-SVN: r96674

gcc/ada/sem_ch4.adb

index 21b962cc3fa030f4f2cbe9937cb4902c71a275dc..a7931e9c0ac00b6dd02330473449c1d875214541 100644 (file)
@@ -4805,7 +4805,6 @@ package body Sem_Ch4 is
          Set_Analyzed (Call_Node, False);
          Rewrite (Node_To_Replace, Call_Node);
          Analyze (Node_To_Replace);
-
       end Complete_Object_Operation;
 
       --------------------------------
@@ -4920,6 +4919,9 @@ package body Sem_Ch4 is
                      --  Allocate the node only once
 
                      if not Present (Call_Node_Case) then
+                        Analyze_Expression (Obj);
+                        Set_Analyzed       (Obj);
+
                         Transform_Object_Operation (
                           Call_Node       => Call_Node_Case,
                           First_Actual    => Obj,
@@ -5018,6 +5020,9 @@ package body Sem_Ch4 is
                   --  Allocate the node only once
 
                   if not Present (Call_Node_Case) then
+                     Analyze_Expression (Obj);
+                     Set_Analyzed       (Obj);
+
                      Transform_Object_Operation (
                        Call_Node       => Call_Node_Case,
                        First_Actual    => Obj,
@@ -5093,8 +5098,7 @@ package body Sem_Ch4 is
       if Is_Subprg_Call and then N = Name (Parent (N)) then
          Actual := First (Parameter_Associations (Parent (N)));
          while Present (Actual) loop
-            Analyze (Actual);
-            Check_Parameterless_Call (Actual);
+            Analyze_Expression (Actual);
             Next (Actual);
          end loop;
       end if;
@@ -5110,6 +5114,9 @@ package body Sem_Ch4 is
          First_Actual := Obj;
       end if;
 
+      Analyze_Expression (First_Actual);
+      Set_Analyzed       (First_Actual);
+
       --  Build a subprogram call node
 
       Transform_Object_Operation (