| -- { 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; |