1-- C55B06B.ADA
2
3--                             Grant of Unlimited Rights
4--
5--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7--     unlimited rights in the software and documentation contained herein.
8--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
9--     this public release, the Government intends to confer upon all
10--     recipients unlimited rights  equal to those held by the Government.
11--     These rights include rights to use, duplicate, release or disclose the
12--     released technical data and computer software in whole or in part, in
13--     any manner and for any purpose whatsoever, and to have or permit others
14--     to do so.
15--
16--                                    DISCLAIMER
17--
18--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23--     PARTICULAR PURPOSE OF SAID MATERIAL.
24--*
25-- CHECK THAT LOOPS MAY BE SPECIFIED FOR DERIVED BOOLEAN AND
26-- DERIVED DERIVED BOOLEAN.
27
28-- DAT 3/26/81
29-- SPS 3/2/83
30
31WITH REPORT; USE REPORT;
32
33PROCEDURE C55B06B IS
34
35     TYPE E IS (FALSE, TRUE);
36     TYPE B1 IS NEW BOOLEAN;
37     TYPE B2 IS NEW B1;
38     TYPE B3 IS NEW E;
39
40     ONE : INTEGER := IDENT_INT (1);
41     COUNT : INTEGER := 0;
42     OLD_COUNT : INTEGER := 0;
43
44     PROCEDURE Q IS
45     BEGIN
46          COUNT := COUNT + 1;
47     END Q;
48
49BEGIN
50     TEST ("C55B06B", "LOOPS OVER DERIVED BOOLEAN");
51
52     FOR I IN BOOLEAN LOOP
53          Q;
54     END LOOP;
55     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
56          FAILED ("LOOP 1");
57     ELSE
58          OLD_COUNT := COUNT;
59     END IF;
60
61     FOR I IN BOOLEAN RANGE FALSE .. TRUE LOOP
62          Q;
63     END LOOP;
64     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
65          FAILED ("LOOP 2");
66     ELSE
67          OLD_COUNT := COUNT;
68     END IF;
69
70     FOR I IN BOOLEAN'(FALSE) .. TRUE LOOP
71          Q;
72     END LOOP;
73     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
74          FAILED ("LOOP 3");
75     ELSE
76          OLD_COUNT := COUNT;
77     END IF;
78
79     FOR I IN E LOOP
80          Q;
81     END LOOP;
82     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
83          FAILED ("LOOP 4");
84     ELSE
85          OLD_COUNT := COUNT;
86     END IF;
87
88     FOR I IN E RANGE FALSE .. TRUE LOOP
89          Q;
90     END LOOP;
91     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
92          FAILED ("LOOP 5");
93     ELSE
94          OLD_COUNT := COUNT;
95     END IF;
96
97     FOR I IN FALSE .. E'(TRUE) LOOP
98          Q;
99     END LOOP;
100     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
101          FAILED ("LOOP 6");
102     ELSE
103          OLD_COUNT := COUNT;
104     END IF;
105
106     FOR I IN B1 LOOP
107          Q;
108     END LOOP;
109     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
110          FAILED ("LOOP 7");
111     ELSE
112          OLD_COUNT := COUNT;
113     END IF;
114
115     FOR I IN B1 RANGE FALSE .. TRUE LOOP
116          Q;
117     END LOOP;
118     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
119          FAILED ("LOOP 8");
120     ELSE
121          OLD_COUNT := COUNT;
122     END IF;
123
124     FOR I IN FALSE .. B1'(TRUE) LOOP
125          Q;
126     END LOOP;
127     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
128          FAILED ("LOOP 9");
129     ELSE
130          OLD_COUNT := COUNT;
131     END IF;
132
133     FOR I IN B2 LOOP
134          Q;
135     END LOOP;
136     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
137          FAILED ("LOOP 10");
138     ELSE
139          OLD_COUNT := COUNT;
140     END IF;
141
142     FOR I IN B2 RANGE FALSE .. TRUE LOOP
143          Q;
144     END LOOP;
145     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
146          FAILED ("LOOP 11");
147     ELSE
148          OLD_COUNT := COUNT;
149     END IF;
150
151     FOR I IN B2'(FALSE) .. TRUE LOOP
152          Q;
153     END LOOP;
154     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
155          FAILED ("LOOP 12");
156     ELSE
157          OLD_COUNT := COUNT;
158     END IF;
159
160     FOR I IN B3 LOOP
161          Q;
162     END LOOP;
163     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
164          FAILED ("LOOP 13");
165     ELSE
166          OLD_COUNT := COUNT;
167     END IF;
168
169     FOR I IN B3 RANGE FALSE .. TRUE LOOP
170          Q;
171     END LOOP;
172     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
173          FAILED ("LOOP 14");
174     ELSE
175          OLD_COUNT := COUNT;
176     END IF;
177
178     FOR I IN FALSE .. B3'(TRUE) LOOP
179          Q;
180     END LOOP;
181     IF OLD_COUNT + IDENT_INT (2) /= COUNT THEN
182          FAILED ("LOOP 15");
183     ELSE
184          OLD_COUNT := COUNT;
185     END IF;
186
187     RESULT;
188 END C55B06B;
189