comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: How many Ada compiler bugs are here?
Date: Fri, 13 Jan 2012 10:06:02 -0500
Date: 2012-01-13T10:06:02-05:00	[thread overview]
Message-ID: <wccboq7d4md.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: pwkna5x23gnb.1p9mw4p0c2uny$.dlg@40tude.net

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:

> No. You can have them in children packages, which is not so uncommon to do. 

True.  You could also create all the objects (maybe there is only one!)
in the body of package P itself, and perhaps hand out access-to-T values.

> I ran into the issue of required return statement several times. If you
> have a hierarchy of managed objects, for which you would like to prevent
> stack instances or make them accessible only though proxy objects, etc.
> Especially when some fields are not null access. Then you may get this
> problem. It can occur pretty late and require a huge amount of redesign.

I don't think it can cause huge redesign.  I agree with you that it's a
language design flaw, but I also agree with AdaMagica that it's a small
one.  Here's a workaround:

   function Foo return T is
   begin
      raise Constraint_Error;
      return Foo; -- kludgy recursive call; can't get here!
   end Foo;

If Foo takes parameters, pass them along in the recursive call.
No need to gin up a value of type T.

> BTW, I always wondered why cannot we have multiple parents of a package in
> Ada?

Sounds hugely complicated.

- Bob



  reply	other threads:[~2012-01-13 15:06 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-12 23:20 How many Ada compiler bugs are here? Maciej Sobczak
2012-01-13  0:21 ` Randy Brukardt
2012-01-13  1:26   ` Adam Beneschan
2012-01-13  8:23     ` Dmitry A. Kazakov
2012-01-13  8:47       ` AdaMagica
2012-01-13  9:07         ` Dmitry A. Kazakov
2012-01-13  9:35           ` AdaMagica
2012-01-13 10:00             ` Dmitry A. Kazakov
2012-01-13 10:38               ` georg bauhaus
2012-01-13 11:39                 ` Dmitry A. Kazakov
2012-01-13 12:43                   ` Georg Bauhaus
2012-01-13 13:06                     ` AdaMagica
2012-01-13 13:16                       ` AdaMagica
2012-01-13 13:22                       ` Georg Bauhaus
2012-01-13 13:29                         ` Dmitry A. Kazakov
2012-01-13 10:52               ` AdaMagica
2012-01-13 11:35                 ` Dmitry A. Kazakov
2012-01-13 12:58                   ` AdaMagica
2012-01-13 13:43                     ` Dmitry A. Kazakov
2012-01-13 15:06                       ` Robert A Duff [this message]
2012-01-13 15:46                         ` Dmitry A. Kazakov
2012-01-13 17:42                           ` georg bauhaus
2012-01-13 18:52                             ` Dmitry A. Kazakov
2012-01-14  0:26                           ` Randy Brukardt
2012-01-14  9:49                             ` Dmitry A. Kazakov
2012-01-19  1:35                               ` Randy Brukardt
2012-01-19 10:33                                 ` Dmitry A. Kazakov
2012-01-14  2:41                           ` Robert A Duff
2012-01-13 17:23               ` Adam Beneschan
2012-01-14  2:41                 ` Robert A Duff
2012-01-13 17:15       ` Adam Beneschan
2012-01-13 20:06   ` Blady
2012-01-13 23:30     ` Adam Beneschan
2012-01-14 13:29       ` Brian Drummond
2012-01-19  1:47         ` Randy Brukardt
2012-01-19  4:24           ` Adam Beneschan
2012-01-20  0:04             ` Randy Brukardt
2012-01-14 10:20   ` Maciej Sobczak
2012-01-14 14:03     ` Brian Drummond
2012-01-16 16:35     ` Adam Beneschan
2012-01-20 10:43       ` Brian Drummond
replies disabled

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