From: Stefan Bellon <bellon@software-erosion.org>
Subject: Extending discriminant types
Date: Sat, 15 Nov 2008 10:16:32 +0100
Date: 2008-11-15T10:16:32+01:00 [thread overview]
Message-ID: <20081115101632.5f98c596@cube.tz.axivion.com> (raw)
Hi,
I stumbled across some behaviour when extending an unconstrained
discriminant type while providing the constraint when extending. Assume
the following code:
type Kind is (A, B);
type Base (K : Kind) is abstract tagged record
case K is
when A => null;
when B => Dummy : Natural;
end case;
end record;
type Base_Access is access all Base'Class;
type Child is new Base (B) with null record;
In this case I would have thought that type Child is now constrained to
Kind B and no object of type Child with Kind A can be created.
However, the following compiles (with GNAT) and does not throw an
exception at runtime:
Var : Base_Access := new Child'(K => A);
Am I misunderstanding the Ada semantics? If so, is there a way to
achieve what I'm trying, i.e. that I can determine the Kind while
extending and not change it when creating objects?
Greetings,
Stefan
next reply other threads:[~2008-11-15 9:16 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-15 9:16 Stefan Bellon [this message]
2008-11-15 18:50 ` Extending discriminant types Jeffrey R. Carter
2008-11-17 16:30 ` Adam Beneschan
2008-11-18 11:02 ` christoph.grein
2008-11-18 23:24 ` Adam Beneschan
2008-11-19 9:49 ` anon
2008-11-19 10:15 ` christoph.grein
2008-11-19 19:19 ` Georg Bauhaus
2008-11-19 11:38 ` Martin
2008-11-20 7:21 ` anon
2008-11-20 8:30 ` christoph.grein
2008-11-20 8:36 ` Ludovic Brenta
2008-11-20 11:45 ` Georg Bauhaus
2008-11-20 11:46 ` Georg Bauhaus
2008-11-20 23:01 ` anon
2008-11-21 11:54 ` Ludovic Brenta
2008-11-20 14:03 ` Dmitry A. Kazakov
2008-11-20 15:03 ` Robert A Duff
2008-11-20 15:57 ` Stefan Bellon
2008-11-21 0:32 ` Adam Beneschan
2008-11-20 16:11 ` Adam Beneschan
2008-11-20 22:59 ` anon
2008-11-21 0:29 ` Adam Beneschan
2008-11-21 7:25 ` anon
2008-11-21 9:19 ` Jean-Pierre Rosen
2008-11-21 10:11 ` christoph.grein
2008-11-21 12:00 ` Ludovic Brenta
2008-11-21 22:31 ` anon
2008-11-22 0:18 ` Stefan Bellon
2008-11-23 4:06 ` anon
2008-11-23 5:39 ` Georg Bauhaus
2008-11-23 8:00 ` anon
2008-11-24 10:08 ` Georg Bauhaus
2008-11-24 22:16 ` anon
2008-11-25 10:37 ` Martin
2008-11-25 11:24 ` Georg Bauhaus
2008-11-25 20:49 ` Jeffrey R. Carter
2008-11-25 21:01 ` Adam Beneschan
2008-11-25 22:09 ` Georg Bauhaus
2008-11-25 22:33 ` Jeffrey R. Carter
2008-11-26 0:58 ` Adam Beneschan
2008-11-26 1:45 ` Jeffrey R. Carter
2008-11-26 9:31 ` Martin
2008-11-26 9:38 ` Stefan Bellon
2008-11-26 9:48 ` Martin
2008-11-26 10:16 ` Stefan Bellon
2008-11-26 11:05 ` Ludovic Brenta
2008-11-26 11:33 ` Stefan Bellon
2008-11-26 15:49 ` Adam Beneschan
2008-11-26 16:15 ` Ludovic Brenta
2008-11-26 11:10 ` Niklas Holsti
2008-11-23 8:48 ` Compiler quality (was: Extending discriminant types) Ludovic Brenta
2008-11-24 23:33 ` anon
2008-11-25 6:54 ` christoph.grein
2008-11-25 10:01 ` Ludovic Brenta
2008-11-26 23:34 ` anon
2008-11-27 10:24 ` Compiler quality Georg Bauhaus
2008-11-27 14:46 ` Ludovic Brenta
2008-11-28 9:13 ` Martin
2008-11-28 10:28 ` Georg Bauhaus
2008-12-02 3:51 ` Randy Brukardt
2008-11-22 13:10 ` Extending discriminant types Gautier
2008-11-24 8:24 ` christoph.grein
2008-11-21 6:11 ` christoph.grein
2008-11-21 21:12 ` Jeffrey R. Carter
2008-11-22 16:41 ` sjw
2008-11-21 11:44 ` Martin
2008-11-20 9:55 ` Martin
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox