comp.lang.ada
 help / color / mirror / Atom feed
From: AdaMagica <christ-usch.grein@t-online.de>
Subject: Re: Extending a third party tagged type while adding finalization
Date: Sun, 3 Dec 2017 11:34:20 -0800 (PST)
Date: 2017-12-03T11:34:20-08:00	[thread overview]
Message-ID: <ba53468a-72ae-4935-9d37-5486d392f529@googlegroups.com> (raw)
In-Reply-To: <p00g50$1o2v$1@gioia.aioe.org>

Am Sonntag, 3. Dezember 2017 10:29:07 UTC+1 schrieb Dmitry A. Kazakov:
Didn't try to compile but can't be legal. Nonabstract type has abstract primitive operation. not null anonymous access type has nothing assigned.

>     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;
> 
> Dispatching calls must be illegal during type-specific 
> initialization/finalization. They are OK after these in the class-wide 
> initialization or before in the class-wide finalization.
> 
> > I was just musing about whether there was a different way
> > to do it.
> 
> Yes, there is no need to keep lists of objects. It is enough to have 
> only static analysis to decide what kind of finalization to call. Nobody 
> cares about finalization of implicitly collected objects, it is a bug 
> anyway.
> 
> > The Ada Finalization method is very clunky and can be
> > limiting at times.  There may not be a better way to do it.  At the
> > end of the day, I find a lot of the errors our programmers make is
> > forgetting to put in a Create/Intialize or Clean_Up/Finalize call
> > on objects that do not have Controlled ancestors.  It's a
> > maintenance headache, so I look for ways to try to remedy that via
> > design.
> 
> Welcome in the club.
> 
> -- 
> Regards,
> Dmitry A. Kazakov
> http://www.dmitry-kazakov.de


  parent reply	other threads:[~2017-12-03 19:34 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
2017-12-03 19:34             ` AdaMagica [this message]
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