Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/ada/acats/tests/c3/c36104a.ada @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 -- C36104A.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 CONSTRAINT_ERROR IS RAISED OR NOT, AS APPROPRIATE, | |
26 -- DURING DISCRETE_RANGE ELABORATIONS/EVALUATIONS IN LOOPS, | |
27 -- ARRAY_TYPE_DEFINITIONS, ARRAY AGGREGATES, SLICES, | |
28 -- AND INDEX CONSTRAINTS IN OBJECT AND TYPE DECLARATIONS, | |
29 -- WHERE AN EXPLICIT (SUB)TYPE IS INCLUDED IN EACH DISCRETE_RANGE. | |
30 -- MEMBERSHIP OPERATORS ARE CHECKED HERE, ALSO, TO ENSURE THAT | |
31 -- EXCEPTIONS ARE NOT RAISED FOR NULL RANGES. | |
32 -- ONLY STATIC CASES ARE CHECKED HERE. | |
33 | |
34 -- DAT 2/3/81 | |
35 -- JRK 2/25/81 | |
36 -- VKG 1/21/83 | |
37 -- L.BROWN 7/15/86 1) ADDED ACCESS TYPES. | |
38 -- 2) DELETED "NULL INDEX RANGES, CONSTRAINT_ERROR | |
39 -- RAISED" SECTION. | |
40 -- 3) DELETED ANY MENTION OF CASE STATEMENT CHOICES | |
41 -- AND VARIANT CHOICES IN THE ABOVE COMMENT. | |
42 -- EDS 7/16/98 AVOID OPTIMIZATION | |
43 | |
44 WITH REPORT; | |
45 PROCEDURE C36104A IS | |
46 | |
47 USE REPORT; | |
48 | |
49 TYPE WEEK IS (SUN, MON, TUE, WED, THU, FRI, SAT); | |
50 TYPE WEEK_ARRAY IS ARRAY (WEEK RANGE <>) OF WEEK; | |
51 SUBTYPE WORK_WEEK IS WEEK RANGE MON .. FRI; | |
52 SUBTYPE MID_WEEK IS WORK_WEEK RANGE TUE .. THU; | |
53 | |
54 TYPE INT_10 IS NEW INTEGER RANGE -10 .. 10; | |
55 TYPE I_10 IS NEW INT_10; | |
56 SUBTYPE I_5 IS I_10 RANGE -5 .. 5; | |
57 TYPE I_5_ARRAY IS ARRAY (I_5 RANGE <>) OF I_5; | |
58 | |
59 BEGIN | |
60 TEST ("C36104A", "CONSTRAINT_ERROR IS RAISED OR NOT IN STATIC " | |
61 & "DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS"); | |
62 | |
63 -- NON-NULL RANGES, CONSTRAINT_ERROR RAISED. | |
64 | |
65 BEGIN | |
66 DECLARE | |
67 TYPE A IS ARRAY (I_5 RANGE 0 .. 6) OF I_5; | |
68 -- ABOVE DECLARATION RAISES CONSTRAINT_ERROR. | |
69 BEGIN | |
70 DECLARE | |
71 -- DEFINE AN OBJECT OF TYPE A AND USE IT TO AVOID | |
72 -- OPTIMIZATION OF SUBTYPE | |
73 A1 : A := (OTHERS => I_5(IDENT_INT(1))); | |
74 BEGIN | |
75 FAILED ("CONSTRAINT_ERROR NOT RAISED 1 " & | |
76 I_5'IMAGE(A1(1)) ); --USE A1 | |
77 END; | |
78 EXCEPTION | |
79 --MAKE SURE THAT CONSTRAINT_ERROR FROM ABOVE STATEMENTS | |
80 --REPORT FAILED. | |
81 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 1"); | |
82 END; | |
83 EXCEPTION | |
84 WHEN CONSTRAINT_ERROR => NULL; | |
85 WHEN OTHERS => | |
86 FAILED ("WRONG EXCEPTION RAISED 1"); | |
87 END; | |
88 | |
89 BEGIN | |
90 FOR I IN MID_WEEK RANGE MON .. MON LOOP | |
91 FAILED ("CONSTRAINT_ERROR NOT RAISED 3"); | |
92 END LOOP; | |
93 FAILED ("CONSTRAINT_ERROR NOT RAISED 3"); | |
94 EXCEPTION | |
95 WHEN CONSTRAINT_ERROR => NULL; | |
96 WHEN OTHERS => | |
97 FAILED ("WRONG EXCEPTION RAISED 3"); | |
98 END; | |
99 | |
100 BEGIN | |
101 DECLARE | |
102 TYPE P IS ACCESS I_5_ARRAY (I_5 RANGE 0 .. 6); | |
103 -- ABOVE DECLARATION RAISES CONSTRAINT_ERROR. | |
104 BEGIN | |
105 DECLARE | |
106 TYPE PA IS NEW P; | |
107 -- DEFINE AN OBJECT OF TYPE PA AND USE IT TO AVOID | |
108 -- OPTIMIZATION OF TYPE | |
109 PA1 : PA := NEW I_5_ARRAY'(0 .. I_5(IDENT_INT(6)) => | |
110 I_5(IDENT_INT(1))); | |
111 BEGIN | |
112 FAILED ("CONSTRAINT_ERROR NOT RAISED 4 " & | |
113 I_5'IMAGE(PA1(1))); --USE PA1 | |
114 END; | |
115 EXCEPTION | |
116 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 4"); | |
117 END; | |
118 EXCEPTION | |
119 WHEN CONSTRAINT_ERROR => NULL; | |
120 WHEN OTHERS => | |
121 FAILED ("WRONG EXCEPTION RAISED 4"); | |
122 END; | |
123 | |
124 DECLARE | |
125 W : WEEK_ARRAY (MID_WEEK); | |
126 BEGIN | |
127 W := (MID_WEEK RANGE MON .. WED => WED); | |
128 -- CONSTRAINT_ERROR RAISED. | |
129 FAILED ("CONSTRAINT_ERROR NOT RAISED 7 " & | |
130 MID_WEEK'IMAGE(W(WED))); --USE W | |
131 EXCEPTION | |
132 WHEN CONSTRAINT_ERROR => NULL; | |
133 WHEN OTHERS => | |
134 FAILED ("WRONG EXCEPTION RAISED 7"); | |
135 END; | |
136 | |
137 DECLARE | |
138 W : WEEK_ARRAY (WORK_WEEK); | |
139 BEGIN | |
140 W := (W'RANGE => WED); -- OK. | |
141 W (MON .. WED) := W (MID_WEEK RANGE MON .. WED); -- EXCEPTION. | |
142 FAILED ("CONSTRAINT_ERROR NOT RAISED 8 " & | |
143 MID_WEEK'IMAGE(W(WED))); --USE W | |
144 EXCEPTION | |
145 WHEN CONSTRAINT_ERROR => NULL; | |
146 WHEN OTHERS => | |
147 FAILED ("WRONG EXCEPTION RAISED 8"); | |
148 END; | |
149 | |
150 BEGIN | |
151 DECLARE | |
152 W : WEEK_ARRAY (MID_WEEK RANGE MON .. FRI); | |
153 -- ELABORATION OF ABOVE RAISES CONSTRAINT_ERROR. | |
154 BEGIN | |
155 W := (W'RANGE => WED); -- OK. | |
156 FAILED ("CONSTRAINT_ERROR NOT RAISED 9 " & | |
157 MID_WEEK'IMAGE(W(WED))); --USE W | |
158 EXCEPTION | |
159 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 9"); | |
160 END; | |
161 EXCEPTION | |
162 WHEN CONSTRAINT_ERROR => NULL; | |
163 WHEN OTHERS => | |
164 FAILED ("WRONG EXCEPTION RAISED 9"); | |
165 END; | |
166 | |
167 BEGIN | |
168 DECLARE | |
169 TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE SUN .. TUE); | |
170 -- RAISES CONSTRAINT_ERROR. | |
171 BEGIN | |
172 DECLARE | |
173 W1 : W := (OTHERS => WED); | |
174 BEGIN | |
175 FAILED ("CONSTRAINT_ERROR NOT RAISED 10 " & | |
176 MID_WEEK'IMAGE(W1(WED))); --USE W1 | |
177 END; | |
178 EXCEPTION | |
179 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 10"); | |
180 END; | |
181 EXCEPTION | |
182 WHEN CONSTRAINT_ERROR => NULL; | |
183 WHEN OTHERS => | |
184 FAILED ("WRONG EXCEPTION RAISED 10"); | |
185 END; | |
186 | |
187 BEGIN | |
188 DECLARE | |
189 SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE MON .. WED); | |
190 -- RAISES CONSTRAINT_ERROR. | |
191 BEGIN | |
192 DECLARE | |
193 W1 : W := (OTHERS => (WED)); | |
194 BEGIN | |
195 FAILED ("CONSTRAINT_ERROR NOT RAISED 8 " & | |
196 MID_WEEK'IMAGE(W1(WED))); --USE W1 | |
197 END; | |
198 EXCEPTION | |
199 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 8"); | |
200 END; | |
201 EXCEPTION | |
202 WHEN CONSTRAINT_ERROR => NULL; | |
203 WHEN OTHERS => | |
204 FAILED ("WRONG EXCEPTION RAISED 11"); | |
205 END; | |
206 | |
207 -- NULL DISCRETE/INDEX RANGES, EXCEPTION NOT RAISED. | |
208 | |
209 BEGIN | |
210 DECLARE | |
211 TYPE A IS ARRAY (I_5 RANGE -5 .. -6) OF I_5; | |
212 A1 : A; | |
213 BEGIN | |
214 IF A1'FIRST /= I_5(IDENT_INT(-5)) THEN | |
215 FAILED ("'FIRST OF NULL ARRAY INCORRECT"); | |
216 END IF; | |
217 END; | |
218 EXCEPTION | |
219 WHEN OTHERS => FAILED ("EXCEPTION RAISED 1"); | |
220 END; | |
221 | |
222 BEGIN | |
223 FOR I IN MID_WEEK RANGE SAT .. SUN LOOP | |
224 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
225 END LOOP; | |
226 FOR I IN MID_WEEK RANGE FRI .. WED LOOP | |
227 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
228 END LOOP; | |
229 FOR I IN MID_WEEK RANGE MON .. SUN LOOP | |
230 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
231 END LOOP; | |
232 FOR I IN I_5 RANGE 10 .. -10 LOOP | |
233 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
234 END LOOP; | |
235 FOR I IN I_5 RANGE 10 .. 9 LOOP | |
236 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
237 END LOOP; | |
238 FOR I IN I_5 RANGE -10 .. -11 LOOP | |
239 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
240 END LOOP; | |
241 FOR I IN I_5 RANGE -10 .. -20 LOOP | |
242 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
243 END LOOP; | |
244 FOR I IN I_5 RANGE 6 .. 5 LOOP | |
245 FAILED("LOOP WAS EXECUTED WITH NULL DISCRETE/INDEX RANGES"); | |
246 END LOOP; | |
247 EXCEPTION | |
248 WHEN OTHERS => FAILED ("EXCEPTION RAISED 3"); | |
249 END; | |
250 | |
251 BEGIN | |
252 DECLARE | |
253 TYPE P IS ACCESS I_5_ARRAY (-5 .. -6); | |
254 PA1 : P := NEW I_5_ARRAY (-5 .. -6); | |
255 BEGIN | |
256 IF PA1'LENGTH /= IDENT_INT(0) THEN | |
257 FAILED ("'LENGTH OF NULL ARRAY INCORRECT"); | |
258 END IF; | |
259 END; | |
260 EXCEPTION | |
261 WHEN OTHERS => | |
262 FAILED ("EXCEPTION RAISED 5"); | |
263 END; | |
264 | |
265 DECLARE | |
266 TYPE NARR IS ARRAY(INTEGER RANGE <>) OF INTEGER; | |
267 SUBTYPE SNARR IS INTEGER RANGE 1 .. 2; | |
268 W : NARR(SNARR) := (1,2); | |
269 BEGIN | |
270 IF W = (SNARR RANGE IDENT_INT(4) .. 2 => 5) THEN | |
271 FAILED("EVALUATION OF EXPRESSION IS INCORRECT"); | |
272 END IF; | |
273 EXCEPTION | |
274 WHEN OTHERS => FAILED ("EXCEPTION RAISED 7"); | |
275 END; | |
276 | |
277 DECLARE | |
278 W : WEEK_ARRAY (MID_WEEK); | |
279 BEGIN | |
280 W := (W'RANGE => WED); -- OK. | |
281 W (TUE .. MON) := W (MID_WEEK RANGE MON .. SUN); | |
282 EXCEPTION | |
283 WHEN OTHERS => FAILED ("EXCEPTION RAISED 8"); | |
284 END; | |
285 | |
286 BEGIN | |
287 DECLARE | |
288 W : WEEK_ARRAY (MID_WEEK RANGE MON .. SUN); | |
289 BEGIN | |
290 IF (W'FIRST /= MON) THEN | |
291 FAILED ("'FIRST OF NULL ARRAY INCORRECT"); | |
292 END IF; | |
293 END; | |
294 EXCEPTION | |
295 WHEN OTHERS => FAILED ("EXCEPTION RAISED 9"); | |
296 END; | |
297 | |
298 BEGIN | |
299 DECLARE | |
300 TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE TUE .. MON); | |
301 W1 : W; | |
302 BEGIN | |
303 IF (W1'FIRST /= TUE) THEN | |
304 FAILED ("'FIRST OF NULL ARRAY INCORRECT"); | |
305 END IF; | |
306 END; | |
307 EXCEPTION | |
308 WHEN OTHERS => FAILED ("EXCEPTION RAISED 10"); | |
309 END; | |
310 | |
311 BEGIN | |
312 DECLARE | |
313 SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE TUE .. MON); | |
314 W1 : W; | |
315 BEGIN | |
316 IF (W1'FIRST /= TUE) THEN | |
317 FAILED ("'FIRST OF NULL ARRAY INCORRECT"); | |
318 END IF; | |
319 END; | |
320 EXCEPTION | |
321 WHEN OTHERS => FAILED ("EXCEPTION RAISED 12"); | |
322 END; | |
323 | |
324 -- NULL MEMBERSHIP RANGES, EXCEPTION NOT RAISED. | |
325 | |
326 BEGIN | |
327 IF SUN IN SAT .. SUN | |
328 OR SAT IN FRI .. WED | |
329 OR WED IN THU .. TUE | |
330 OR THU IN MON .. SUN | |
331 OR FRI IN SAT .. FRI | |
332 OR WED IN FRI .. MON | |
333 THEN | |
334 FAILED ("INCORRECT 'IN' EVALUATION 1"); | |
335 END IF; | |
336 | |
337 IF INTEGER'(0) IN 10 .. -10 | |
338 OR INTEGER'(0) IN 10 .. 9 | |
339 OR INTEGER'(0) IN -10 .. -11 | |
340 OR INTEGER'(0) IN -10 .. -20 | |
341 OR INTEGER'(0) IN 6 .. 5 | |
342 OR INTEGER'(0) IN 5 .. 3 | |
343 OR INTEGER'(0) IN 7 .. 3 | |
344 THEN | |
345 FAILED ("INCORRECT 'IN' EVALUATION 2"); | |
346 END IF; | |
347 | |
348 IF WED NOT IN THU .. TUE | |
349 AND INTEGER'(0) NOT IN 4 .. -4 | |
350 THEN NULL; | |
351 ELSE FAILED ("INCORRECT 'NOT IN' EVALUATION"); | |
352 END IF; | |
353 EXCEPTION | |
354 WHEN OTHERS => FAILED ("EXCEPTION RAISED 52"); | |
355 END; | |
356 | |
357 | |
358 RESULT; | |
359 END C36104A; |