exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): For an RACW without any...
authorThomas Quinot <quinot@adacore.com>
Thu, 16 Jun 2005 08:38:05 +0000 (10:38 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 16 Jun 2005 08:38:05 +0000 (10:38 +0200)
2005-06-14  Thomas Quinot  <quinot@adacore.com>

* exp_dist.adb (Add_RACW_Primitive_Declarations_And_Bodies): For an
RACW without any primitives, do not generate the if statement for
dispatching by name in the PolyORB/DSA case, as it would be malformed
(it would have an Elsif_Parts list that is not No_List, but with a
length of 0).

From-SVN: r101035

gcc/ada/exp_dist.adb

index 60fdf4f09fd0db2b71cd68b40e588236997ddc4a..13dbbcea06e955761caaa201c96b76afbb4b96c2 100644 (file)
@@ -1164,11 +1164,6 @@ package body Exp_Dist is
             --  simple sequence of string comparisons.
 
             RPC_Receiver_Elsif_Parts := New_List;
-            Append_To (RPC_Receiver_Statements,
-              Make_Implicit_If_Statement (Designated_Type,
-                Condition       => New_Occurrence_Of (Standard_False, Loc),
-                Then_Statements => New_List,
-                Elsif_Parts     => RPC_Receiver_Elsif_Parts));
          end if;
       end if;
 
@@ -1308,6 +1303,16 @@ package body Exp_Dist is
       --  Build the case statement and the heart of the subprogram
 
       if not Is_RAS then
+         if Get_PCS_Name = Name_PolyORB_DSA
+           and then Present (First (RPC_Receiver_Elsif_Parts))
+         then
+            Append_To (RPC_Receiver_Statements,
+              Make_Implicit_If_Statement (Designated_Type,
+                Condition       => New_Occurrence_Of (Standard_False, Loc),
+                Then_Statements => New_List,
+                Elsif_Parts     => RPC_Receiver_Elsif_Parts));
+         end if;
+
          Append_To (RPC_Receiver_Case_Alternatives,
            Make_Case_Statement_Alternative (Loc,
              Discrete_Choices => New_List (Make_Others_Choice (Loc)),