From: sbelmont700@gmail.com
Subject: Default_Storage_Pool
Date: Tue, 20 Feb 2018 18:00:05 -0800 (PST)
Date: 2018-02-20T18:00:05-08:00 [thread overview]
Message-ID: <74cfbf22-7082-4a43-aef9-6a55a049fe61@googlegroups.com> (raw)
Can anyone offer insight into what exactly should happen when Default_Storage_Pool is explicitly set within an extended return statement to a pool within the return object? In particular, consider these shenanigans:
package O is
pool_1 : My_Fancy_Pool
pragma Default_Storage_Pool(pool_1);
type T is limited
record
pool_2 : My_Fancy_Pool
p1 : access Integer;
end record;
function F return T;
end O;
package body O is
function F return T is
begin
return Result : T do
declare
pragma Default_Storage_Pool(Result.pool_2); -- legal?
p2 : access Integer;
begin
p2 := new integer'(42);
Result.p1 := new integer'(43);
end;
end return;
end F;
end O;
GNAT happily accepts this, but based on print lines, it allocates Result.p1 from pool_1 and p2 from some unspecified default pool (i.e. neither pool_1 or pool_2). I wasn't sure what I was expecting; I assumed an error message, but failing that, both to go into result.pool_2, and was surprised to get neither.
Any clarifications are appreciated.
-sb
next reply other threads:[~2018-02-21 2:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-21 2:00 sbelmont700 [this message]
2018-02-22 1:13 ` Default_Storage_Pool Randy Brukardt
2018-02-22 13:02 ` Default_Storage_Pool sbelmont700
2018-02-23 0:06 ` Default_Storage_Pool Randy Brukardt
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox