comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: "Ada Gems": Constructor functions
Date: Thu, 06 Sep 2007 16:16:26 GMT
Date: 2007-09-06T16:16:26+00:00	[thread overview]
Message-ID: <uJVDi.498536$p47.245936@bgtnsc04-news.ops.worldnet.att.net> (raw)
In-Reply-To: 1189015827.384331.17490@k79g2000hse.googlegroups.com


Yes, you did find a GNAT BUG!

To find the line numbers and errors try 

gnat1 t.adb -gnatl 2>t.lst
gnat1 test_t.adb -gnatl 2>test_t.lst

But to make a report to Adacore:
First compile using 

gnatmake test_t.adb 1>1 2>2

-- Note: File '2' should have the error info that Adacore is 
--                asking about.


Then send Adacore the following list of files 

attach file => t.ads 

attach file => t.adb

attach file => test_t.adb

attach file => 1

-- Note: Send File 1 only if it has any special info else skip
--

attach file => 2


I use Ada 95 to compile and did not receive the BUG ERROR 
only a few normal compiling errors.

Now, for a compilable corrected version in GNAT Ada 95.  
Did not use GNAT Ada 2005 compiler. 

changes to code:
--- removed  => denote the line is commented out
--- Added    => denote the line is added to source 
other comments added for info only


-----------
-- t.ads --
-----------
with Ada.Strings.Unbounded;
use Ada.Strings.Unbounded;

package T is
--    type Object (<>) is tagged limited private; --------- removed
                                   -------- because can not initial
                                   -------- a limited type in Ada 95

    type Object (<>) is private;  --------- Added

   function Create_Object (Name : in String) return Object;
   function Construct return Object;
   function Name (This : in Object) return String;

private ------------------------------ Added
--   type Object is tagged limited -------- removed
                                   -------- because can not initial
                                   -------- a limited type in Ada 95

   type Object is  ------------------------ Added
      record        
         Name : Unbounded_String;
      end record;
end T;

-----------
-- t.adb --
-----------
package body T is
  function Create_Object (Name : in String) return Object is
    begin  --------- Added
      return (Name => To_Unbounded_String (Name));
    end Create_Object;

  function Construct return Object is
    begin  --------- Added
      return Create_Object (Name => "Object without a name!");
    end Construct;

  function Name (This : in Object) return String is
    begin
      return To_String (This.Name);
    end Name;

---------------------------------------- removed 
--                                 ----- because it conflicts 
--                                 ----- with t.ads version
--   type Object is tagged limited
--      record
--         Name : Unbounded_String;
--      end record;
end T;

----------------
-- test_t.ads --
----------------
with T;
use  T; ------ Added 
        ------ could of added "T." to Construct instead

procedure Test_T is
   Some_Object : constant T.Object := Construct;
begin
   null;
end Test_T;




In <1189015827.384331.17490@k79g2000hse.googlegroups.com>,  =?iso-8859-2?q?Tomek_Wa=B3kuski?= <tomek.walkuski@gmail.com> writes:
>Hi,
>
>motivated by this article posted at adacore.com I have written some
>code:
>
>---------
>t.ads
>---------
>with Ada.Strings.Unbounded;
>use Ada.Strings.Unbounded;
>
>package T is
>    type Object (<>) is tagged limited private;
>
>   function Create_Object (Name : in String) return Object;
>   function Construct return Object;
>   function Name (This : in Object) return String;
>
>   type Object is tagged limited
>      record
>         Name : Unbounded_String;
>      end record;
>end T;
>
>
>---------
>t.adb
>---------
>package body T is
>   function Create_Object (Name : in String) return Object is
>      return (Name => To_Unbounded_String (Name));
>   end Create_Object;
>
>   function Construct return Object is
>      return Create_Object (Name => "Object without a name!");
>   end Construct;
>
>   function Name (This : in Object) return String is
>   begin
>      return To_String (This.Name);
>   end Name;
>
>   type Object is tagged limited
>      record
>         Name : Unbounded_String;
>      end record;
>end T;
>
>
>---------
>test_t.adb
>---------
>with T;
>
>procedure Test_T is
>   Some_Object : constant T.Object := Construct;
>begin
>   null;
>end Test_T;
>
>------------------------------
>.... and tried to compile it.
>
>(Gentoo Linux, gnat-gpl-4.1.3.2007)
>
>Compiler said:
>"
>+================GNAT BUG DETECTED==================+
>| GPL 2007 (20070402-41) (i686-pc-linux-gnu) Assert_Failure namet.adb:
>687  |
>(...)
>compilation abandoned
>gnatmake: "test_t.adb" compilation error
>"
>
>Is it REALLY a compiler bug? Or am I only dumb? :) Maybe I'm doing
>something, somewhere wrong?
>




  parent reply	other threads:[~2007-09-06 16:16 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-05 18:10 "Ada Gems": Constructor functions Tomek Wałkuski
2007-09-05 22:47 ` Jeffrey R. Carter
     [not found]   ` <1189064716.528979.201170@19g2000hsx.googlegroups.com>
2007-09-06  7:54     ` Tomek Wa kuski
2007-09-06 13:55       ` Robert A Duff
2007-09-06 14:12         ` Tomek Wa kuski
2007-09-06  0:04 ` Robert A Duff
2007-09-06 16:16 ` anon [this message]
2007-09-07 10:38   ` Tomek Wa kuski
2007-09-07 15:17     ` Robert A Duff
2007-09-08 18:20       ` Tomek Wa kuski
2007-09-10 13:46         ` Tomek Wa kuski
2007-09-11  7:51           ` Georg Bauhaus
2007-09-11 10:26             ` Tomek Wa kuski
2007-09-11 21:33             ` Anh Vo
2007-09-12  7:39               ` Tomek Wa kuski
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox