blob: 2598e7e6c9855177feab2d921982105eed298985 [file] [log] [blame]
-- { dg-do run }
-- { dg-output "1 2 3 4 5 6 7 \| 1- 1 2 3 2- 1 2 3 3- 1 2 3 4- 1 2 3 5- 1 2 3" }
with Ada.Text_IO; use Ada.Text_IO;
procedure Exit1 is
type Int_Range is record
First, Last : Integer;
end record
with Iterable => (First => First,
Next => Next,
Previous => Previous,
Last => Last,
Has_Element => Has_Element,
Element => Element);
function First (IR : Int_Range) return Integer is (IR.First);
function Last (IR : Int_Range) return Integer is (IR.Last);
function Next (IR : Int_Range; N : Integer) return Integer is (N + 1);
function Previous (IR : Int_Range; N : Integer) return Integer is (N - 1);
function Has_Element (IR : Int_Range; N : Integer) return Boolean is
(N in IR.First ..IR.Last);
function Element (IR : Int_Range; N : Integer) return Integer is (N);
IR : Int_Range := (1, 10);
begin
A_Loop: for I of IR loop
Put (I'Img);
exit A_Loop when I = 7;
end loop A_Loop;
Put (" | ");
B_Loop: for I of IR loop
Put (I'Img & '-');
C_Loop : for J of IR loop
Put (J'Img);
exit when J = 3;
end loop C_Loop;
exit B_Loop when I = 5;
end loop B_Loop;
New_Line;
end Exit1;