2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / c5 / c55b06a.ada
blob524de24f76a949602ce2433c9ce2a927780eb3d4
1 -- C55B06A.ADA
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.
16 -- DISCLAIMER
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 BOOLEAN, INTEGER,
26 -- CHARACTER, ENUMERATION, AND DERIVED TYPES, INCLUDING
27 -- TYPES DERIVED FROM DERIVED TYPES. DERIVED BOOLEAN IS NOT
28 -- TESTED IN THIS TEST.
30 -- DAT 3/26/81
31 -- JBG 9/29/82
32 -- SPS 3/11/83
33 -- JBG 10/5/83
34 -- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
36 WITH REPORT; USE REPORT;
38 PROCEDURE C55B06A IS
40 TYPE ENUM IS ('A', 'B', 'D', 'C', Z, X, D, A, C);
42 TYPE D1 IS NEW CHARACTER RANGE 'A' .. 'Z';
43 TYPE D2 IS NEW INTEGER;
44 TYPE D3 IS NEW ENUM;
45 TYPE D4 IS NEW D1;
46 TYPE D5 IS NEW D2;
47 TYPE D6 IS NEW D3;
49 ONE : INTEGER := IDENT_INT(1);
50 COUNT : INTEGER := 0;
51 OLDCOUNT : INTEGER := 0;
53 PROCEDURE Q IS
54 BEGIN
55 COUNT := COUNT + ONE;
56 END Q;
58 BEGIN
59 TEST ("C55B06A", "TEST LOOPS FOR ALL DISCRETE TYPES");
61 FOR I IN BOOLEAN LOOP
63 END LOOP;
64 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
65 FAILED ("LOOP 1");
66 END IF;
67 OLDCOUNT := COUNT;
69 FOR I IN FALSE .. TRUE LOOP
71 END LOOP;
72 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
73 FAILED ("LOOP 2");
74 END IF;
75 OLDCOUNT := COUNT;
77 FOR I IN BOOLEAN RANGE FALSE .. TRUE LOOP
79 END LOOP;
80 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
81 FAILED ("LOOP 3");
82 END IF;
83 OLDCOUNT := COUNT;
85 FOR I IN INTEGER LOOP
87 EXIT WHEN I = INTEGER'FIRST + 2;
88 END LOOP;
89 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN
90 FAILED ("LOOP 4");
91 END IF;
92 OLDCOUNT := COUNT;
94 FOR I IN 3 .. IDENT_INT (5) LOOP
96 END LOOP;
97 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN
98 FAILED ("LOOP 5");
99 END IF;
100 OLDCOUNT := COUNT;
102 FOR I IN INTEGER RANGE -2 .. -1 LOOP
104 END LOOP;
105 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
106 FAILED ("LOOP 6");
107 END IF;
108 OLDCOUNT := COUNT;
110 FOR I IN INTEGER RANGE INTEGER'FIRST .. INTEGER'FIRST + 1 LOOP
112 END LOOP;
113 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
114 FAILED ("LOOP 7");
115 END IF;
116 OLDCOUNT := COUNT;
118 FOR I IN 'A' .. CHARACTER'('Z') LOOP
120 END LOOP;
121 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN
122 FAILED ("LOOP 9");
123 END IF;
124 OLDCOUNT := COUNT;
126 FOR I IN CHARACTER RANGE 'A' .. 'D' LOOP
128 END LOOP;
129 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN
130 FAILED ("LOOP 10");
131 END IF;
132 OLDCOUNT := COUNT;
134 FOR I IN ENUM LOOP
136 END LOOP;
137 IF OLDCOUNT + IDENT_INT(9) /= COUNT THEN
138 FAILED ("LOOP 11");
139 END IF;
140 OLDCOUNT := COUNT;
142 FOR I IN ENUM RANGE D .. C LOOP
144 END LOOP;
145 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN
146 FAILED ("LOOP 12");
147 END IF;
148 OLDCOUNT := COUNT;
150 FOR I IN 'A' .. ENUM'(Z) LOOP
152 END LOOP;
153 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
154 FAILED ("LOOP 13");
155 END IF;
156 OLDCOUNT := COUNT;
158 FOR I IN D1 LOOP
160 END LOOP;
161 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN
162 FAILED ("LOOP 14");
163 END IF;
164 OLDCOUNT := COUNT;
166 FOR I IN D1 RANGE 'A' .. 'Z' LOOP
168 END LOOP;
169 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN
170 FAILED ("LOOP 15");
171 END IF;
172 OLDCOUNT := COUNT;
174 FOR I IN D1'('A') .. 'D' LOOP
176 END LOOP;
177 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN
178 FAILED ("LOOP 16");
179 END IF;
180 OLDCOUNT := COUNT;
182 FOR I IN D2 LOOP
184 IF I > D2'FIRST + 3 THEN
185 EXIT;
186 END IF;
187 END LOOP;
188 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
189 FAILED ("LOOP 17");
190 END IF;
191 OLDCOUNT := COUNT;
193 FOR I IN D2 RANGE -100 .. -99 LOOP
195 END LOOP;
196 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
197 FAILED ("LOOP 18");
198 END IF;
199 OLDCOUNT := COUNT;
201 FOR I IN D2'(1) .. 2 LOOP
203 END LOOP;
204 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
205 FAILED ("LOOP 19");
206 END IF;
207 OLDCOUNT := COUNT;
209 FOR I IN D3 LOOP
210 IF I IN 'A' .. 'C' THEN
211 Q; -- 4
212 ELSE
213 Q; Q; -- 10
214 END IF;
215 END LOOP;
216 IF OLDCOUNT + IDENT_INT(14) /= COUNT THEN
217 FAILED ("LOOP 20");
218 END IF;
219 OLDCOUNT := COUNT;
221 FOR I IN D3 RANGE 'A' .. Z LOOP
223 END LOOP;
224 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
225 FAILED ("LOOP 21");
226 END IF;
227 OLDCOUNT := COUNT;
229 FOR I IN 'A' .. D3'(Z) LOOP
231 END LOOP;
232 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
233 FAILED ("LOOP 22");
234 END IF;
235 OLDCOUNT := COUNT;
237 FOR I IN D4 LOOP
239 END LOOP;
240 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN
241 FAILED ("LOOP 23");
242 END IF;
243 OLDCOUNT := COUNT;
245 FOR I IN D4'('A') .. 'Z' LOOP
247 END LOOP;
248 IF OLDCOUNT + IDENT_INT(26) /= COUNT THEN
249 FAILED ("LOOP 24");
250 END IF;
251 OLDCOUNT := COUNT;
253 FOR I IN D4 RANGE 'B' .. 'D' LOOP
255 END LOOP;
256 IF OLDCOUNT + IDENT_INT(3) /= COUNT THEN
257 FAILED ("LOOP 25");
258 END IF;
259 OLDCOUNT := COUNT;
261 FOR J IN D5 LOOP
262 Q; -- 4
263 EXIT WHEN J = D5(INTEGER'FIRST) + 3;
264 Q; -- 3
265 END LOOP;
266 IF OLDCOUNT + IDENT_INT(7) /= COUNT THEN
267 FAILED ("LOOP 26");
268 END IF;
269 OLDCOUNT := COUNT;
271 FOR J IN D5 RANGE -2 .. -1 LOOP
273 END LOOP;
274 IF OLDCOUNT + IDENT_INT(2) /= COUNT THEN
275 FAILED ("LOOP 27");
276 END IF;
277 OLDCOUNT := COUNT;
279 FOR J IN D5'(-10) .. D5'(-6) LOOP
281 END LOOP;
282 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
283 FAILED ("LOOP 28");
284 END IF;
285 OLDCOUNT := COUNT;
287 FOR J IN D6 LOOP
289 END LOOP;
290 IF OLDCOUNT + IDENT_INT(9) /= COUNT THEN
291 FAILED ("LOOP 29");
292 END IF;
293 OLDCOUNT := COUNT;
295 FOR J IN D6 RANGE Z .. A LOOP
297 END LOOP;
298 IF OLDCOUNT + IDENT_INT(4) /= COUNT THEN
299 FAILED ("LOOP 30");
300 END IF;
301 OLDCOUNT := COUNT;
303 FOR J IN D6'('D') .. D LOOP
305 END LOOP;
306 IF OLDCOUNT + IDENT_INT(5) /= COUNT THEN
307 FAILED ("LOOP 31");
308 END IF;
309 OLDCOUNT := COUNT;
312 RESULT;
313 END C55B06A;