comp.lang.ada
 help / color / mirror / Atom feed
* Potential Coextension Bug in GNAT
@ 2018-12-20 15:59 Jere
  2018-12-20 16:02 ` Jere
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Jere @ 2018-12-20 15:59 UTC (permalink / raw)


I was messing around and trying to learn coextensions and
I came across some counter intuitive functionality.  If I
directly initialize one via an aggregate, it works fine.
However, if I initialize through a constructing function, 
it seems to treat the access discriminant as a normal access
type and finalizes it at the end of the program instead of
when the object leaves scope.  I don't fully understand them
yet and there isn't much on them listed in the RM but one
section (at least according to the index)[1].  That one
section does indicate that initialization via a function
should be valid however, so maybe I am back to I am doing it
wrong or potentially a GNAT bug.

I'm using GNAT 7.1.1

Here is my test program

****************************************************

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Finalization; use Ada.Finalization;

procedure Hello is

    type Thing_1 is new Limited_Controlled with null record;
    
    overriding 
    procedure Finalize(Self : in out Thing_1) is
    begin
        Put_Line("Finalize Thing_1");
    end Finalize;
    
    type Thing_2
        (Other : not null access Thing_1)
    is limited null record;
    
    procedure Test_Coextension_1 is
        The_Thing : Thing_2(new Thing_1);
    begin
        Put_Line("Coextenson directly initialized");
    end Test_Coextension_1;
    
    function Make_Thing_2 return Thing_2 is
    begin
        return (Other => new Thing_1);
    end Make_Thing_2;
    
    procedure Test_Coextension_2 is
        The_Thing : Thing_2 := Make_Thing_2;
    begin
        Put_Line("Coextension initialized through build in place");
    end Test_Coextension_2;
    
begin
    Test_Coextension_1;
    Test_Coextension_2;
    Put_Line("Test Finished");
end Hello;

****************************************************

Any thoughts?

[1] Ada 2012 tc1 RM 3.10.2(14.4/3) - http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-3-10-2.html#I2301


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

end of thread, other threads:[~2018-12-21 11:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-20 15:59 Potential Coextension Bug in GNAT Jere
2018-12-20 16:02 ` Jere
2018-12-20 16:56 ` Simon Wright
2018-12-21  2:16   ` Randy Brukardt
2018-12-21 11:24   ` Jere
2018-12-20 17:58 ` Simon Wright
2018-12-21  2:25   ` Randy Brukardt
2018-12-21 11:32     ` Jere

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