comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Extending a third party tagged type while adding finalization
Date: Sun, 3 Dec 2017 17:39:27 +0100
Date: 2017-12-03T17:39:27+01:00	[thread overview]
Message-ID: <p019bv$1cnf$1@gioia.aioe.org> (raw)
In-Reply-To: b2769e4f-ddc1-4fab-b162-2bd4487ff178@googlegroups.com

On 2017-12-03 16:10, AdaMagica wrote:
> Am Sonntag, 3. Dezember 2017 10:29:07 UTC+1 schrieb Dmitry A. Kazakov:
>>      type T is new Ada.Finalization.Controlled with record
>>         Self : not null access T'Class;
>>      end record;
>>      procedure Initialize (X : in out T);
>>      procedure Foo (X : in out T) is abstract;
>>
>>      type S is new T with ...
>>      overriding procedure Foo (X : in out S);
>>
>>      procedure Initialize (X : in out T) is
>>      begin
>>         X.Self.Foo; -- Boom!
>>      end Initialize;
> 
> Again an example of cryptic code I do not understand what it is
> aimed  at to demonstrate.

It demonstrates dispatch from Initialize (of T) to a procedure (Foo) of 
the derived type (S) before the derived type's Initialize is called.

> All I can see is that it is illegal Ada.

It is perfectly legal Ada. Initialize is not a constructor, it is just a 
primitive operation. So there is no promises made and no promises to 
fulfill regarding its semantics. One can call it anywhere, any number of 
times, in any order, everything is up to the unfortunate programmer.

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


  reply	other threads:[~2017-12-03 16:39 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-22 12:43 Extending a third party tagged type while adding finalization Jere
2017-11-22 16:42 ` AdaMagica
2017-11-26 17:33   ` Jere
2017-11-26 18:15     ` Dmitry A. Kazakov
2017-11-26 19:31       ` Jere
2017-11-27  9:46     ` AdaMagica
2017-11-27 12:56       ` Jere
2017-11-27 15:00         ` AdaMagica
2017-11-27 16:38           ` Jere
2017-11-27 18:37             ` AdaMagica
2017-11-27 19:53               ` Jere
2017-11-28 11:48                 ` AdaMagica
2017-12-03  2:22                   ` Jere
2017-12-03 21:53               ` Robert Eachus
2017-12-04  7:58                 ` Dmitry A. Kazakov
2017-12-04 14:59                   ` Robert Eachus
2017-12-04 15:39                     ` Dmitry A. Kazakov
2017-11-27 18:10     ` Shark8
2017-11-27 19:56       ` Jere
2017-11-28  1:55       ` Randy Brukardt
2017-12-03  2:47         ` Jere
2017-12-03  9:29           ` Dmitry A. Kazakov
2017-12-03 15:10             ` AdaMagica
2017-12-03 16:39               ` Dmitry A. Kazakov [this message]
2017-12-03 19:34             ` AdaMagica
2017-12-03 19:41               ` Dmitry A. Kazakov
2017-12-04 12:38                 ` AdaMagica
2017-12-04 13:19                   ` AdaMagica
2017-12-04 13:55                     ` Dmitry A. Kazakov
2017-12-04 15:44                       ` AdaMagica
2017-12-04 16:19                         ` Dmitry A. Kazakov
2017-12-04 20:54           ` Randy Brukardt
2017-12-04 21:02             ` Dmitry A. Kazakov
2017-12-05 21:09               ` Randy Brukardt
2017-12-05 21:29                 ` Dmitry A. Kazakov
2017-12-07  1:13                   ` Randy Brukardt
2017-12-07  8:36                     ` Dmitry A. Kazakov
2017-12-07 23:22                       ` Randy Brukardt
2017-12-08  9:30                         ` Dmitry A. Kazakov
2017-12-09  0:17                           ` Randy Brukardt
2017-12-11  9:03                             ` Dmitry A. Kazakov
2017-12-11 22:42                               ` Randy Brukardt
2017-12-12 16:11                                 ` AdaMagica
2017-12-12 20:08                               ` G. B.
2017-12-12 20:32                                 ` Dmitry A. Kazakov
replies disabled

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