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
next prev 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