From: Jere <jhb.chat@gmail.com>
Subject: Potential Coextension Bug in GNAT
Date: Thu, 20 Dec 2018 07:59:00 -0800 (PST)
Date: 2018-12-20T07:59:00-08:00 [thread overview]
Message-ID: <f8aca7a2-3b3a-4934-8219-c2961dc79458@googlegroups.com> (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
next reply other threads:[~2018-12-20 15:59 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-20 15:59 Jere [this message]
2018-12-20 16:02 ` Potential Coextension Bug in GNAT 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
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox