-- { dg-do compile } with text_io; use text_io; procedure modify_a_constant is type Outer; type Inner (Outer_Ref : access Outer) is limited null record; type Outer is limited record Inner_Field : Inner (Outer_Ref => Outer'Access); Integer_Field : Integer; end record; X : constant Outer := (Inner_Field => <>, Integer_Field => 123); begin Put_Line (Integer'image (X.Integer_Field)); X.Inner_Field.Outer_Ref.Integer_Field := 0; Put_Line (Integer'image (X.Integer_Field)); end Modify_A_Constant;