comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Re: Discriminants of tagged types
Date: Wed, 27 Oct 2010 14:05:32 -0700 (PDT)
Date: 2010-10-27T14:05:32-07:00	[thread overview]
Message-ID: <989c6412-8dbf-403c-9ce0-766e0e953fb6@u17g2000yqi.googlegroups.com> (raw)
In-Reply-To: wcczktzliw3.fsf@shell01.TheWorld.com

On 27 Paź, 18:06, Robert A Duff <bobd...@shell01.TheWorld.com> wrote:

> > In the mean time I have solved the problem by realizing that
> > "taggedness" need not be public

> That doesn't sound right.

I was surprised, too.

> What does your example look like,

Much more complex, but reproducible with your code.

> and what compiler compiled it without error?

GPL 2009 (20090519)

> The latest GNAT says:
>
>      1. with Ada.Finalization; use Ada.Finalization;
>      2. package Eg is
>      3.    type T (X: Boolean := False) is private;
>      4. private
>      5.    type T (X: Boolean := False) is new Controlled with null
>      record;
>                                  |
>         >>> discriminants of tagged type cannot have defaults
>
>      6. end Eg;

My compiler eats this stuff without even blinking. It complains only
when I add the "tagged" keyword in line 3, between "is" and "private".

> > (except that now the "distinguished receiver" notation is gone...)
>
> I'm not a big fan of that notation.  An awful lot of compiler
> work for a little bit of syntactic sugar (or maybe syntactic
> salt).

Protected objects, tasks and records already supported it. It is not a
new idea, so it wasn't that big deal for compiler writers, I guess.
I treat it as a unification of syntax across these similar features -
quite a valid goal in language design.

This is especially reasonable if you take into account that in Ada
2005 protected types can derive from interfaces. It would be very
inconsistent not to allow the same calling syntax across the whole
hierarchy, including the class-wide type.

type Base is interface;
procedure Do_Something (X : in out Base) is abstract;

protected type Derived is new Base with
   procedure Do_Something;
end Derived;

D : Derived;
B : Base'Class := D;

D.Do_Something;  -- this was always OK, D is protected
B.Do_Something;  -- this *should* be OK as well for consistency

--
Maciej Sobczak * http://www.inspirel.com



  parent reply	other threads:[~2010-10-27 21:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-27 12:16 Discriminants of tagged types Maciej Sobczak
2010-10-27 12:34 ` Ludovic Brenta
2010-10-27 13:19   ` Dmitry A. Kazakov
2010-10-27 13:52     ` Robert A Duff
2010-10-27 14:12       ` Dmitry A. Kazakov
2010-10-27 13:44 ` Robert A Duff
2010-10-27 15:06   ` Adam Beneschan
2010-10-27 15:58     ` Yannick Duchêne (Hibou57)
2010-10-27 16:35       ` Vinzent Hoefler
2010-10-27 17:58       ` J-P. Rosen
2010-10-27 20:18         ` Yannick Duchêne (Hibou57)
2010-10-27 20:26       ` Adam Beneschan
2010-10-27 22:07         ` Yannick Duchêne (Hibou57)
2010-10-27 22:42           ` Adam Beneschan
2010-10-27 15:13   ` Maciej Sobczak
2010-10-27 16:02     ` Yannick Duchêne (Hibou57)
2010-10-27 21:13       ` Maciej Sobczak
2010-10-27 21:23         ` Ludovic Brenta
2010-10-28  8:38           ` Maciej Sobczak
2010-10-27 21:25         ` Vinzent Hoefler
2010-10-28  7:53         ` Dmitry A. Kazakov
2010-10-28  8:50           ` Maciej Sobczak
2010-10-28 10:28             ` Dmitry A. Kazakov
2010-10-28 17:48             ` Yannick Duchêne (Hibou57)
2010-10-29 18:59             ` Vinzent Hoefler
2010-10-30 21:05               ` Maciej Sobczak
2010-10-30 21:21                 ` Vinzent Hoefler
2010-10-30 22:01                   ` Yannick Duchêne (Hibou57)
2010-10-31 16:20                   ` Maciej Sobczak
2010-10-31 17:04                     ` Yannick Duchêne (Hibou57)
2010-10-31 18:36                     ` Shark8
2010-10-31 21:06                       ` Maciej Sobczak
2010-11-01  0:44                         ` Shark8
2010-11-01  9:41                           ` Maciej Sobczak
2010-10-27 16:06     ` Robert A Duff
2010-10-27 16:34       ` Yannick Duchêne (Hibou57)
2010-10-27 21:05       ` Maciej Sobczak [this message]
2010-10-28  0:35         ` Robert A Duff
2010-10-28  8:55           ` Maciej Sobczak
2010-10-27 21:28       ` Simon Wright
2010-10-27 13:54 ` J-P. Rosen
replies disabled

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