A missing procedure declaration in test.ads causes test.adb to generate an
ice. Compiler output is:
+===========================GNAT BUG DETECTED==============================+
| 3.4.2 20040901 (prerelease) (i686-pc-linux-gnu) Assert_Failure sinfo.adb:2479|
| Error detected at test.adb:27:16                                         |
| Please submit a bug report; see http://gcc.gnu.org/bugs.html.            |
| Include the entire contents of this bug box in the report.               |
| Include the exact gcc or gnatmake command that you entered.              |
| Also include sources listed below in gnatchop format                     |
| (concatenated together with no headers between files).                   |
+==========================================================================+

Please include these source files with error report
Note that list may not be accurate in some cases, 
so please double check that the problem can still 
be reproduced with the set of files listed.

test.adb
test.ads

compilation abandoned

The two files test.adb and test.ads are listed below. The preprocessor
output is silly in this case.

Environment:
System: Linux walsh.cs 2.4.20-ac2 #11 Wed Mar 19 14:16:50 EST 2003 i686 i686 
i386 GNU/Linux
Architecture: i686

        
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /home/kwalsh/work/gnu_3.4/gcc/configure --with-gcc 
--with-gnu-ld --with-gnu-as --prefix=/opt/ada --enable-libada --enable-libgcj 
--enable-java-gc=boehm --enable-threads --enable-interpreter 
--enable-hash-synchronization --enable-shared 
--enable-languages=ada,c,c++,objc,f77,java

How-To-Repeat:
---- test.adb -------------------------------------------------------
with Ada.Unchecked_Deallocation;

package body test is

   protected body Safe_Object is

      procedure Add (Increment : in Integer := 1) is
      begin
         Val := Val + Increment;
      end Add;

      procedure Destroy_Stuff is
      begin
          Val := 0;
      end Destroy_Stuff;

   end Safe_Object;

   procedure Add (This : in out Object; Increment : in Integer := 1) is
   begin
      This.Safe.Add (Increment);
   end Add;

   procedure Finalize (This : in out Object) is
   begin
      This.Safe.Destroy_Stuff ;
   end Finalize;

end test;

---- test.ads -------------------------------------------------------
with Ada.Finalization;
use  Ada;

package test is

   type Object is limited private;

   procedure Add (This : in out Object; Increment : in Integer := 1);

private

   protected type Safe_Object (Parent : access Object) is
      procedure Add (Increment : in Integer := 1);
      --procedure Destroy_Stuff;
   private
      Val     : aliased Integer;
   end Safe_Object;

   type Object is new Finalization.Limited_Controlled with record
      Safe : Safe_Object (Object'Access);
   end record;

   procedure Finalize (This : in out Object);

end test;
------- Additional Comments From kwalsh at cs dot cornell dot edu  2005-07-01 
16:28 -------
Fix:
        Add the missing declaration (Destroy_Stuff, in this case) to the ads 
file.

-- 
           Summary: Assert_Failure sinfo.adb:2479 instead of meaningful
                    error message
           Product: gcc
           Version: 3.4.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: kwalsh at cs dot cornell dot edu
                CC: gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22270

Reply via email to