38 lines
896 B
Ada
38 lines
896 B
Ada
-- { 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;
|