blob: af0f43e649331713bd46ad905970142a14762b00 [file] [log] [blame]
-- { dg-do run }
procedure Abstract_With_Anonymous_Result is
package Pkg is
type I is abstract tagged null record;
type Acc_I_Class is access all I'Class;
function Func (V : I) return access I'Class is abstract;
procedure Proc (V : access I'Class);
type New_I is new I with null record;
function Func (V : New_I) return access I'Class;
end Pkg;
package body Pkg is
X : aliased New_I;
procedure Proc (V : access I'Class) is begin null; end Proc;
function Func (V : New_I) return access I'Class is
begin
X := V;
return X'Access;
end Func;
end Pkg;
use Pkg;
New_I_Obj : aliased New_I;
procedure Proc2 (V : access I'Class) is
begin
Proc (Func (V.all)); -- Call to Func causes gigi abort 122
end Proc2;
begin
Proc2 (New_I_Obj'Access);
end Abstract_With_Anonymous_Result;