From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,436e4ce138981b82 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-03-16 15:16:24 PST Path: archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-01!sn-post-02!sn-post-01!supernews.com!corp.supernews.com!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: abstract sub programs overriding Date: Tue, 16 Mar 2004 17:14:45 -0600 Organization: Posted via Supernews, http://www.supernews.com Message-ID: <105f2jql5ge7f0a@corp.supernews.com> References: <1078776213.376775@master.nyc.kbcfp.com> <1078839257.157439@master.nyc.kbcfp.com> <5cmr40t76va200betf07b7bd6er05ltto9@4ax.com> <1078845298.702789@master.nyc.kbcfp.com> <0ipr40thtf86b520a0qdi003aj87gtuhd4@4ax.com> <1078849973.701176@master.nyc.kbcfp.com> <1078924150.268074@master.nyc.kbcfp.com> <1078934469.744922@master.nyc.kbcfp.com> <1078949096.760629@master.nyc.kbcfp.com> <1079013337.572283@master.nyc.kbcfp.com> <9_mdnfzBlfEC3M_d4p2dnA@comcast.com> <1079361579.900651@master.nyc.kbcfp.com> X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.50.4807.1700 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4910.0300 X-Complaints-To: abuse@supernews.com Xref: archiver1.google.com comp.lang.ada:6357 Date: 2004-03-16T17:14:45-06:00 List-Id: "Robert I. Eachus" wrote in message news:N_ydnXrG6NPEtcrdRVn-hg@comcast.com... > Hyman Rosen wrote: > > > I think I still don't understand. If you say 'a := b;' and a has a > > Controlled type, isn't Finalize called on a before its bits are > > clobbered? So in your Initilaize example, when you say > > 'Object := (Parent_Type with ...);', isn't Finalize called on Object > > before its bits are replaced with the extension aggregate? And since > > we're in the first Initialize of Object, doesn't that mean that Finalize > > will be called on it before its first Initialize is complete? > > Interesting thought. RM 7.6 (17, 17.1, and 21) permit an implementation > to omit that Finalization, and requires that it be omitted in some > cases. But you are right that a compiler could actually do that call in > some circumstances. I don't see why you think that. 'Object' in this case is not a new object; it is a parameter passed into Initialize, and the compiler certainly cannot assume that it is uninitialized. In any case, RM 7.6(21) is seriously screwed up; AI-147 changes it quite a bit, mainly to eliminate bogus 'optimizations' like the one you seem to think is allowed here. (Eliminating this Finalize call would make a library like Claw impossible to write, because you could have objects that are never finalized and thus never unhooked from the lists to which they belong.) Randy.