17.2.2.4 Examples

declare
   type Point is record
      X, Y : Integer;
   end record;

   type Segment is array (1 .. 2) of Point;
   type Triangle is array (1 .. 3) of Segment;

   S : Segment := (1 .. 2 => (0, 0));
   T : Triangle := (1 .. 3 => (1 .. 2 => (0, 0)));
begin
   S := (S with delta (1).X | (2).Y => 12, (1).Y => 15);

   pragma Assert (S (1).X = 12);
   pragma Assert (S (2).Y = 12);
   pragma Assert (S (1).Y = 15);

   T := (T with delta (2)(1).Y => 18);
   pragma Assert (T (2)(1).Y = 18);
end;