| -- { dg-do run } |
| |
| procedure Discr33 is |
| |
| subtype Int is Integer range 1..100; |
| |
| type T (D : Int := 1) is |
| record |
| A : Integer; |
| B : String (1..D); |
| C : aliased Integer; |
| end record; |
| |
| Var : T := (D => 1, A => 1234, B => "x", C => 4567); |
| |
| type Int_Ref is access all Integer; |
| Pointer_To_C : Int_Ref := Var.C'Access; |
| |
| begin |
| |
| if Pointer_To_C.all /= 4567 then |
| raise Program_Error; |
| end if; |
| |
| Var := (D => 26, A => 1234, B => "abcdefghijklmnopqrstuvwxyz", C => 2345); |
| |
| if Pointer_To_C.all /= 2345 then |
| raise Program_Error; |
| end if; |
| |
| end Discr33; |