comp.lang.ada
 help / color / mirror / Atom feed
* Ada design bug or GNAT bug?
@ 2015-06-20 18:55 Dmitry A. Kazakov
  2015-06-21  2:42 ` Randy Brukardt
  0 siblings, 1 reply; 46+ messages in thread
From: Dmitry A. Kazakov @ 2015-06-20 18:55 UTC (permalink / raw)


Is it intentional that there is no way to derive from a more specific type
privately? A key design pattern is no more possible in GNAT GPL 2015:

package P1 is
   type T1 is tagged null record;
   type T2 is new T1 with null record;
   function Foo return not null access T2;
end P1;

with P1; use P1;
package P2 is
   type T3 is new T1 with private;
private
   type T3 is new T2 with null record;
   overriding function Foo return not null access T3; -- Illegal!
end P2;

p2.ads:5:09: type must be declared abstract or "Foo" overridden
p2.ads:5:09: "Foo" has been inherited from subprogram at p1.ads:4
p2.ads:6:24: private function with tagged result must override visible-part
function
p2.ads:6:24: move subprogram to the visible part (RM 3.9.3(10))

[ Since when access types became tagged? ]

There seem no way to implement T3 by deriving from T2. *Any* declaration of
Foo would be illegal.

1. It cannot be inherited
2. A public declaration is not an overriding
3. A private declaration must be public

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2015-07-07  8:06 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-20 18:55 Ada design bug or GNAT bug? Dmitry A. Kazakov
2015-06-21  2:42 ` Randy Brukardt
2015-06-21  6:47   ` Dmitry A. Kazakov
2015-06-22 17:39     ` Randy Brukardt
2015-06-22 18:16       ` Dmitry A. Kazakov
2015-06-23 11:00         ` G.B.
2015-06-23 14:27           ` Dmitry A. Kazakov
2015-06-23 11:45         ` G.B.
2015-06-23 14:30           ` Dmitry A. Kazakov
2015-07-02 22:22         ` Randy Brukardt
2015-07-03  8:02           ` Dmitry A. Kazakov
2015-07-03 17:33             ` Randy Brukardt
2015-07-03 21:34               ` Dmitry A. Kazakov
2015-07-04  3:11                 ` Randy Brukardt
2015-07-04 12:14                   ` Dmitry A. Kazakov
2015-07-05  0:53                     ` Randy Brukardt
2015-06-22 18:27       ` Shark8
2015-06-23 11:51         ` vincent.diemunsch
2015-06-23 19:55           ` Shark8
2015-06-23 13:06         ` vincent.diemunsch
2015-06-23 14:30           ` David Botton
2015-06-23 15:57             ` Niklas Holsti
2015-06-23 16:01               ` G.B.
2015-06-23 18:05               ` David Botton
2015-06-23 19:38               ` David Botton
2015-06-23 14:38           ` Dmitry A. Kazakov
2015-06-23 16:57             ` Vincent
2015-06-23 17:15               ` Dmitry A. Kazakov
2015-06-23 19:14                 ` vincent.diemunsch
2015-06-23 19:33                   ` Dmitry A. Kazakov
2015-06-23 17:42           ` Jeffrey R. Carter
2015-07-02 22:06           ` Randy Brukardt
2015-07-04  1:52             ` Shark8
2015-07-04  3:24               ` Randy Brukardt
2015-07-04 11:02                 ` Build-in-place semantics? (Was: Ada design bug or GNAT bug?) Jacob Sparre Andersen
2015-07-04 12:15                   ` Dmitry A. Kazakov
2015-07-05  0:45                     ` Randy Brukardt
2015-07-05  7:10                       ` Dmitry A. Kazakov
2015-07-05  0:40                   ` Randy Brukardt
2015-07-04 14:05                 ` Ada design bug or GNAT bug? Bob Duff
2015-07-04  7:46               ` Simon Wright
2015-07-04 12:00                 ` Björn Lundin
2015-07-05  0:48                   ` Randy Brukardt
2015-07-06 12:37             ` Vincent
2015-07-06 20:05               ` Randy Brukardt
2015-07-07  8:06               ` Dmitry A. Kazakov

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