| -- { dg-do run } |
| -- Test that a static link is correctly passed to a subprogram which is |
| -- indirectly called through an aggregate. |
| |
| procedure Nested_Proc1 is |
| |
| I : Integer := 0; |
| |
| procedure P1 (X : Integer) is |
| begin |
| I := X; |
| end; |
| |
| type Func_Ptr is access procedure (X : Integer); |
| |
| type Arr is array (1..64) of Integer; |
| |
| type Rec is record |
| F : Func_Ptr; |
| A : Arr; |
| end record; |
| |
| procedure P2 (R : Rec) is |
| begin |
| R.F (1); |
| end; |
| |
| begin |
| P2 ((F => P1'Access, A => (others => 0))); |
| if I /= 1 then |
| raise Program_Error; |
| end if; |
| end; |