| -- { dg-do run } |
| |
| procedure Missing_Acc_Check is |
| |
| Test_Failed : Exception; |
| |
| type Int_Access is access all Integer; |
| |
| Save : Int_Access := null; |
| |
| type Int_Rec is record |
| Int : aliased Integer; |
| end record; |
| |
| type Ltd_Rec (IR_Acc : access Int_Rec) is limited null record; |
| |
| function Pass_Rec (IR_Acc : access Int_Rec) return Int_Access is |
| begin |
| return IR_Acc.Int'Access; -- Accessibility check here |
| end Pass_Rec; |
| |
| procedure Proc is |
| IR : aliased Int_Rec; |
| LR : Ltd_Rec (IR'Access); |
| begin |
| Save := Pass_Rec (LR.IR_Acc); -- Must raise Program_Error; |
| |
| if Save /= null then |
| raise Test_Failed; |
| end if; |
| |
| exception |
| when Program_Error => |
| null; |
| end Proc; |
| |
| begin |
| Proc; |
| end Missing_Acc_Check; |