exp_disp (Expand_Interface_Conversion): Freeze the entity associated with the target...
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 6 Aug 2008 07:56:23 +0000 (09:56 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 6 Aug 2008 07:56:23 +0000 (09:56 +0200)
2008-08-06  Javier Miranda  <miranda@adacore.com>

* exp_disp (Expand_Interface_Conversion): Freeze the entity associated
with the target interface before expanding the code of the interface
conversion.

From-SVN: r138766

gcc/ada/ChangeLog
gcc/ada/exp_disp.adb

index 761c5da..80d4385 100644 (file)
@@ -1,3 +1,20 @@
+2008-08-06  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Process_Discriminants): diagnose redundant or improper
+       null exclusion in a discriminant declaration
+
+       * sem_ch8.adb (Analyze_Object_Renaming): diagnose null exclusion
+       indicators when type is not an access type.
+
+       * sem_ch12.adb (Formal_Object_Declaration): diagnose null exclusion
+       indicators when type is not an access type.
+
+2008-08-06  Javier Miranda  <miranda@adacore.com>
+
+       * exp_disp (Expand_Interface_Conversion): Freeze the entity associated
+       with the target interface before expanding the code of the interface
+       conversion.
+
 2008-08-05  Ed Schonberg  <schonberg@adacore.com>
 
        * freeze.adb:
index 461edc7..9ce2e74 100644 (file)
@@ -773,6 +773,11 @@ package body Exp_Disp is
          Iface_Typ := Corresponding_Record_Type (Iface_Typ);
       end if;
 
+      --  Freeze the entity associated with the target interface to have
+      --  available the attribute Access_Disp_Table.
+
+      Freeze_Before (N, Iface_Typ);
+
       pragma Assert (not Is_Static
         or else (not Is_Class_Wide_Type (Iface_Typ)
                   and then Is_Interface (Iface_Typ)));