2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / cc / cc3017b.ada
blob0f8fcfd6f8ff8791b55713f61ac51990c71e132c
1 -- CC3017B.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 AN INSTANCE OF A GENERIC PROCEDURE MUST DECLARE A
26 -- PROCEDURE AND THAT AN INSTANCE OF A GENERIC FUNCTION MUST
27 -- DECLARE A FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT RAISED
28 -- IF THE DEFAULT VALUE FOR A FORMAL PARAMETER DOES NOT SATISFY
29 -- THE CONSTRAINTS OF THE SUBTYPE_INDICATION WHEN THE
30 -- DECLARATION IS ELABORATED, ONLY WHEN THE DEFAULT IS USED.
32 -- SUBTESTS ARE:
33 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
34 -- INITIALIZED WITH A STATIC AGGREGATE.
35 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
36 -- INITIALIZED WITH A STATIC VALUE.
37 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
38 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
39 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
40 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
41 -- WITH A STATIC AGGREGATE.
42 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
43 -- INITIALIZED WITH A STATIC AGGREGATE.
45 -- EDWARD V. BERARD, 7 AUGUST 1990
47 WITH REPORT;
49 PROCEDURE CC3017B IS
51 BEGIN
53 REPORT.TEST ("CC3017B", "CHECK THAT AN INSTANCE OF A GENERIC " &
54 "PROCEDURE MUST DECLARE A PROCEDURE AND THAT AN " &
55 "INSTANCE OF A GENERIC FUNCTION MUST DECLARE A " &
56 "FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT " &
57 "RAISED IF AN INITIALIZATION VALUE DOES NOT SATISFY " &
58 "CONSTRAINTS ON A FORMAL PARAMETER");
60 --------------------------------------------------
62 NONSTAT_ARRAY_PARMS:
64 DECLARE
66 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
67 -- INITIALIZED WITH A STATIC AGGREGATE.
69 TYPE NUMBER IS RANGE 1 .. 100 ;
71 GENERIC
73 TYPE INTEGER_TYPE IS RANGE <> ;
74 LOWER : IN INTEGER_TYPE ;
75 UPPER : IN INTEGER_TYPE ;
77 PROCEDURE PA (FIRST : IN INTEGER_TYPE ;
78 SECOND : IN INTEGER_TYPE) ;
80 PROCEDURE PA (FIRST : IN INTEGER_TYPE ;
81 SECOND : IN INTEGER_TYPE) IS
83 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE LOWER .. FIRST,
84 INTEGER_TYPE RANGE LOWER .. SECOND)
85 OF INTEGER_TYPE;
87 PROCEDURE PA1 (A : A1 := ((LOWER,UPPER),(UPPER,UPPER)))
89 BEGIN
90 REPORT.FAILED ("BODY OF PA1 EXECUTED");
91 EXCEPTION
92 WHEN OTHERS =>
93 REPORT.FAILED ("EXCEPTION RAISED IN PA1");
94 END PA1;
96 BEGIN -- PA
97 PA1;
98 EXCEPTION
99 WHEN CONSTRAINT_ERROR =>
100 NULL;
101 WHEN OTHERS =>
102 REPORT.FAILED ("WRONG EXCEPTION RAISED - PA1");
103 END PA;
105 PROCEDURE NEW_PA IS NEW PA (INTEGER_TYPE => NUMBER,
106 LOWER => 1,
107 UPPER => 50) ;
109 BEGIN -- NONSTAT_ARRAY_PARMS
111 NEW_PA (FIRST => NUMBER (25),
112 SECOND => NUMBER (75));
114 EXCEPTION
115 WHEN OTHERS =>
116 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PA");
118 END NONSTAT_ARRAY_PARMS ;
120 --------------------------------------------------
122 SCALAR_NON_STATIC:
124 DECLARE
126 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
127 -- INITIALIZED WITH A STATIC VALUE.
129 TYPE NUMBER IS RANGE 1 .. 100 ;
131 GENERIC
133 TYPE INTEGER_TYPE IS RANGE <> ;
134 STATIC_VALUE : IN INTEGER_TYPE ;
136 PROCEDURE PB (LOWER : IN INTEGER_TYPE ;
137 UPPER : IN INTEGER_TYPE) ;
139 PROCEDURE PB (LOWER : IN INTEGER_TYPE ;
140 UPPER : IN INTEGER_TYPE) IS
142 SUBTYPE INT IS INTEGER_TYPE RANGE LOWER .. UPPER ;
144 PROCEDURE PB1 (I : INT := STATIC_VALUE) IS
145 BEGIN -- PB1
146 REPORT.FAILED ("BODY OF PB1 EXECUTED");
147 EXCEPTION
148 WHEN OTHERS =>
149 REPORT.FAILED ("EXCEPTION RAISED IN PB1");
150 END PB1;
152 BEGIN -- PB
153 PB1;
154 EXCEPTION
155 WHEN CONSTRAINT_ERROR =>
156 NULL;
157 WHEN OTHERS =>
158 REPORT.FAILED ("WRONG EXCEPTION RAISED - PB1");
159 END PB;
161 PROCEDURE NEW_PB IS NEW PB (INTEGER_TYPE => NUMBER,
162 STATIC_VALUE => 20) ;
164 BEGIN -- SCALAR_NON_STATIC
166 NEW_PB (LOWER => NUMBER (25),
167 UPPER => NUMBER (75));
169 EXCEPTION
170 WHEN OTHERS =>
171 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PB");
172 END SCALAR_NON_STATIC ;
174 --------------------------------------------------
176 REC_NON_STAT_COMPS:
178 DECLARE
180 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
181 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
183 TYPE NUMBER IS RANGE 1 .. 100 ;
185 GENERIC
187 TYPE INTEGER_TYPE IS RANGE <> ;
188 F_STATIC_VALUE : IN INTEGER_TYPE ;
189 S_STATIC_VALUE : IN INTEGER_TYPE ;
190 T_STATIC_VALUE : IN INTEGER_TYPE ;
191 L_STATIC_VALUE : IN INTEGER_TYPE ;
193 PROCEDURE PC (LOWER : IN INTEGER_TYPE ;
194 UPPER : IN INTEGER_TYPE) ;
196 PROCEDURE PC (LOWER : IN INTEGER_TYPE ;
197 UPPER : IN INTEGER_TYPE) IS
199 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
200 RANGE LOWER .. UPPER ;
201 TYPE AR1 IS ARRAY (INTEGER RANGE 1..3) OF
202 SUBINTEGER_TYPE ;
203 TYPE REC IS
204 RECORD
205 FIRST : SUBINTEGER_TYPE ;
206 SECOND : AR1 ;
207 END RECORD;
209 PROCEDURE PC1 (R : REC := (F_STATIC_VALUE,
210 (S_STATIC_VALUE,
211 T_STATIC_VALUE,
212 L_STATIC_VALUE))) IS
213 BEGIN -- PC1
214 REPORT.FAILED ("BODY OF PC1 EXECUTED");
215 EXCEPTION
216 WHEN OTHERS =>
217 REPORT.FAILED ("EXCEPTION RAISED IN PC1");
218 END PC1;
220 BEGIN -- PC
221 PC1;
222 EXCEPTION
223 WHEN CONSTRAINT_ERROR =>
224 NULL;
225 WHEN OTHERS =>
226 REPORT.FAILED ("WRONG EXCEPTION RAISED - PC1");
227 END PC;
229 PROCEDURE NEW_PC IS NEW PC (INTEGER_TYPE => NUMBER,
230 F_STATIC_VALUE => 15,
231 S_STATIC_VALUE => 19,
232 T_STATIC_VALUE => 85,
233 L_STATIC_VALUE => 99) ;
235 BEGIN -- REC_NON_STAT_COMPS
236 NEW_PC (LOWER => 20,
237 UPPER => 80);
238 EXCEPTION
239 WHEN OTHERS =>
240 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PC");
241 END REC_NON_STAT_COMPS ;
243 --------------------------------------------------
245 FIRST_STATIC_ARRAY:
247 DECLARE
249 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
250 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
251 -- WITH A STATIC AGGREGATE.
253 TYPE NUMBER IS RANGE 1 .. 100 ;
255 GENERIC
257 TYPE INTEGER_TYPE IS RANGE <> ;
258 F_STATIC_VALUE : IN INTEGER_TYPE ;
259 S_STATIC_VALUE : IN INTEGER_TYPE ;
260 T_STATIC_VALUE : IN INTEGER_TYPE ;
261 L_STATIC_VALUE : IN INTEGER_TYPE ;
262 A_STATIC_VALUE : IN INTEGER_TYPE ;
263 B_STATIC_VALUE : IN INTEGER_TYPE ;
264 C_STATIC_VALUE : IN INTEGER_TYPE ;
265 D_STATIC_VALUE : IN INTEGER_TYPE ;
267 PROCEDURE P1D (LOWER : IN INTEGER_TYPE ;
268 UPPER : IN INTEGER_TYPE) ;
270 PROCEDURE P1D (LOWER : IN INTEGER_TYPE ;
271 UPPER : IN INTEGER_TYPE) IS
273 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
274 RANGE LOWER .. UPPER ;
276 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE
277 F_STATIC_VALUE .. S_STATIC_VALUE,
278 INTEGER_TYPE RANGE
279 T_STATIC_VALUE .. L_STATIC_VALUE)
280 OF SUBINTEGER_TYPE ;
282 PROCEDURE P1D1 (A : A1 :=
283 ((A_STATIC_VALUE, B_STATIC_VALUE),
284 (C_STATIC_VALUE, D_STATIC_VALUE))) IS
285 BEGIN -- P1D1
286 REPORT.FAILED ("BODY OF P1D1 EXECUTED");
287 EXCEPTION
288 WHEN OTHERS =>
289 REPORT.FAILED ("EXCEPTION RAISED IN P1D1");
290 END P1D1;
292 BEGIN -- P1D
293 P1D1 ;
294 EXCEPTION
295 WHEN CONSTRAINT_ERROR =>
296 NULL;
297 WHEN OTHERS =>
298 REPORT.FAILED ("WRONG EXCEPTION RAISED - P1D1");
299 END P1D;
301 PROCEDURE NEW_P1D IS NEW P1D (INTEGER_TYPE => NUMBER,
302 F_STATIC_VALUE => 21,
303 S_STATIC_VALUE => 37,
304 T_STATIC_VALUE => 67,
305 L_STATIC_VALUE => 79,
306 A_STATIC_VALUE => 11,
307 B_STATIC_VALUE => 88,
308 C_STATIC_VALUE => 87,
309 D_STATIC_VALUE => 13) ;
311 BEGIN -- FIRST_STATIC_ARRAY
312 NEW_P1D (LOWER => 10,
313 UPPER => 90);
314 EXCEPTION
315 WHEN OTHERS =>
316 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_P1D");
317 END FIRST_STATIC_ARRAY ;
319 --------------------------------------------------
321 SECOND_STATIC_ARRAY:
323 DECLARE
325 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
326 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
327 -- WITH A STATIC AGGREGATE.
329 TYPE NUMBER IS RANGE 1 .. 100 ;
331 GENERIC
333 TYPE INTEGER_TYPE IS RANGE <> ;
334 F_STATIC_VALUE : IN INTEGER_TYPE ;
335 S_STATIC_VALUE : IN INTEGER_TYPE ;
336 T_STATIC_VALUE : IN INTEGER_TYPE ;
337 L_STATIC_VALUE : IN INTEGER_TYPE ;
338 A_STATIC_VALUE : IN INTEGER_TYPE ;
339 B_STATIC_VALUE : IN INTEGER_TYPE ;
341 PROCEDURE P2D (LOWER : IN INTEGER_TYPE ;
342 UPPER : IN INTEGER_TYPE) ;
344 PROCEDURE P2D (LOWER : IN INTEGER_TYPE ;
345 UPPER : IN INTEGER_TYPE) IS
347 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
348 RANGE LOWER .. UPPER ;
350 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE
351 F_STATIC_VALUE .. S_STATIC_VALUE,
352 INTEGER_TYPE RANGE
353 T_STATIC_VALUE .. L_STATIC_VALUE)
354 OF SUBINTEGER_TYPE ;
356 PROCEDURE P2D1 (A : A1 :=
357 (F_STATIC_VALUE .. S_STATIC_VALUE =>
358 (A_STATIC_VALUE, B_STATIC_VALUE))) IS
359 BEGIN -- P2D1
360 REPORT.FAILED ("BODY OF P2D1 EXECUTED");
361 EXCEPTION
362 WHEN OTHERS =>
363 REPORT.FAILED ("EXCEPTION RAISED IN P2D1");
364 END P2D1;
366 BEGIN -- P2D
367 P2D1;
368 EXCEPTION
369 WHEN CONSTRAINT_ERROR =>
370 NULL;
371 WHEN OTHERS =>
372 REPORT.FAILED ("WRONG EXCEPTION RAISED - P2D1");
373 END P2D;
375 PROCEDURE NEW_P2D IS NEW P2D (INTEGER_TYPE => NUMBER,
376 F_STATIC_VALUE => 21,
377 S_STATIC_VALUE => 37,
378 T_STATIC_VALUE => 67,
379 L_STATIC_VALUE => 79,
380 A_STATIC_VALUE => 7,
381 B_STATIC_VALUE => 93) ;
383 BEGIN -- SECOND_STATIC_ARRAY
384 NEW_P2D (LOWER => 5,
385 UPPER => 95);
386 EXCEPTION
387 WHEN OTHERS =>
388 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_P2D");
389 END SECOND_STATIC_ARRAY ;
391 --------------------------------------------------
393 REC_NON_STATIC_CONS:
395 DECLARE
397 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
398 -- INITIALIZED WITH A STATIC AGGREGATE.
400 TYPE NUMBER IS RANGE 1 .. 100 ;
402 GENERIC
404 TYPE INTEGER_TYPE IS RANGE <> ;
405 F_STATIC_VALUE : IN INTEGER_TYPE ;
406 S_STATIC_VALUE : IN INTEGER_TYPE ;
407 T_STATIC_VALUE : IN INTEGER_TYPE ;
408 L_STATIC_VALUE : IN INTEGER_TYPE ;
409 D_STATIC_VALUE : IN INTEGER_TYPE ;
411 PROCEDURE PE (LOWER : IN INTEGER_TYPE ;
412 UPPER : IN INTEGER_TYPE) ;
414 PROCEDURE PE (LOWER : IN INTEGER_TYPE ;
415 UPPER : IN INTEGER_TYPE) IS
417 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
418 RANGE LOWER .. UPPER ;
419 TYPE AR1 IS ARRAY (INTEGER RANGE 1..3) OF
420 SUBINTEGER_TYPE ;
422 TYPE REC (DISCRIM : SUBINTEGER_TYPE) IS
423 RECORD
424 FIRST : SUBINTEGER_TYPE ;
425 SECOND : AR1 ;
426 END RECORD ;
428 SUBTYPE REC4 IS REC (LOWER) ;
430 PROCEDURE PE1 (R : REC4 := (D_STATIC_VALUE,
431 F_STATIC_VALUE,
432 (S_STATIC_VALUE,
433 T_STATIC_VALUE,
434 L_STATIC_VALUE))) IS
435 BEGIN -- PE1
436 REPORT.FAILED ("BODY OF PE1 EXECUTED");
437 EXCEPTION
438 WHEN OTHERS =>
439 REPORT.FAILED ("EXCEPTION RAISED IN PE1");
440 END PE1;
442 BEGIN -- PE
443 PE1;
444 EXCEPTION
445 WHEN CONSTRAINT_ERROR =>
446 NULL;
447 WHEN OTHERS =>
448 REPORT.FAILED ("WRONG EXCEPTION RAISED - PE1");
449 END PE;
451 PROCEDURE NEW_PE IS NEW PE (INTEGER_TYPE => NUMBER,
452 F_STATIC_VALUE => 37,
453 S_STATIC_VALUE => 21,
454 T_STATIC_VALUE => 67,
455 L_STATIC_VALUE => 79,
456 D_STATIC_VALUE => 44) ;
458 BEGIN -- REC_NON_STATIC_CONS
459 NEW_PE (LOWER => 2,
460 UPPER => 99);
461 EXCEPTION
462 WHEN OTHERS =>
463 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PE");
464 END REC_NON_STATIC_CONS ;
466 --------------------------------------------------
468 REPORT.RESULT;
470 END CC3017B;