Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / ada / acats / tests / c3 / c37213k.ada
blobd5b5dc38d809851894c42bf7bf67468a9d06edc9
1 -- C37213K.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 -- OBJECTIVE:
26 -- CHECK, FOR A GENERIC FORMAL TYPE - WHERE A DISCRIMINANT OR AN
27 -- INDEX CONSTRAINT DEPENDS ON A RECORD DISCRIMINANT AND THE
28 -- RECORD TYPE IS CONSTRAINED BY DEFAULT - USED TO DECLARE AN
29 -- ARRAY OR RECORD COMPONENT, THAT THE NON-DISCRIMINANT EXPRESSIONS
30 -- OF THE CONSTRAINT ARE CHECKED FOR COMPATIBILITY:
31 -- 1) ONLY IN AN OBJECT DECLARATION, AND
32 -- 2) ONLY IF THE DESCRIMINANT-DEPENDENT COMPONENT IS PRESENT
33 -- IN THE SUBTYPE.
35 -- HISTORY:
36 -- VCL 10/23/88 CREATED ORIGINAL TEST BY SPLITTING FROM C37213J.
37 -- VCL 03/30/88 MODIFIED THE TEST DISCRIPTION TO MORE ACCURATELY
38 -- DESCRIBE THE OBJECTIVE; CHANGED THE FORMAL
39 -- PARAMETERS TO THE GENERIC UNITS AND THE
40 -- CORRESPONDING ACTUAL PARAMETERS; REORGANIZED THE
41 -- TEST SO THAT ALL OPERATIONS ON A SPECIFIC TYPE
42 -- ARE TOGETHER; REWROTE ONE OF THE GENERIC
43 -- PACKAGES AS A GENERIC PROCEDURE TO BROADEN
44 -- COVERAGE OF TEST.
46 WITH REPORT; USE REPORT;
47 PROCEDURE C37213K IS
48 BEGIN
49 TEST ("C37213K", "THE NON-DISCRIMINANT VALUES OF A DISCRIMINANT " &
50 "OR AN INDEX CONSTRAINT THAT DEPEND ON A " &
51 "DISCRIMINANT ARE PROPERLY CHECKED WHEN THE " &
52 "RECORD TYPE IS CONSTRAINED BY DEFAULT AND " &
53 "USED AS THE ACTUAL PARAMETER TO A GENERIC " &
54 "FORMAL TYPE USED TO DECLARE AN ARRAY OR A " &
55 "RECORD COMPONENT");
57 DECLARE
58 SUBTYPE SM IS INTEGER RANGE 1..10;
59 TYPE REC (D1, D2 : SM) IS
60 RECORD NULL; END RECORD;
61 TYPE MY_ARR IS ARRAY (SM RANGE <>) OF INTEGER;
63 SEQUENCE_NUMBER : INTEGER;
65 GENERIC
66 TYPE CONS IS PRIVATE;
67 OBJ_XCP : BOOLEAN;
68 TAG : STRING;
69 PACKAGE ARRAY_COMP_CHK IS END ARRAY_COMP_CHK;
71 PACKAGE BODY ARRAY_COMP_CHK IS
72 BEGIN
73 DECLARE
74 TYPE ARR IS ARRAY (1..5) OF CONS;
75 BEGIN
76 DECLARE
77 X : ARR;
79 FUNCTION VALUE RETURN ARR IS
80 BEGIN
81 IF EQUAL (3,3) THEN
82 RETURN X;
83 ELSE
84 RETURN X;
85 END IF;
86 END VALUE;
87 BEGIN
88 IF OBJ_XCP THEN
89 FAILED ("NO CHECK DURING DECLARATION " &
90 "OF OBJECT OF TYPE ARR - " & TAG);
91 ELSIF X /= VALUE THEN
92 FAILED ("INCORRECT VALUE FOR OBJECT OF " &
93 "TYPE ARR - " & TAG);
94 END IF;
95 END;
96 EXCEPTION
97 WHEN CONSTRAINT_ERROR =>
98 IF NOT OBJ_XCP THEN
99 FAILED ("IMPROPER CONSTRAINT CHECKED " &
100 "DURING DECLARATION OF OBJECT " &
101 "OF TYPE ARR - " & TAG);
102 END IF;
103 END;
104 EXCEPTION
105 WHEN CONSTRAINT_ERROR =>
106 FAILED ("CONSTRAINT IMPROPERLY CHECKED " &
107 "DURING DECLARATION OF ARR - " & TAG);
108 END ARRAY_COMP_CHK;
110 GENERIC
111 TYPE CONS IS PRIVATE;
112 PROCEDURE REC_COMP_CHK (OBJ_XCP : BOOLEAN;
113 TAG : STRING);
115 PROCEDURE REC_COMP_CHK (OBJ_XCP : BOOLEAN;
116 TAG : STRING) IS
117 BEGIN
118 DECLARE
119 TYPE NREC IS
120 RECORD
121 C1 : CONS;
122 END RECORD;
123 BEGIN
124 DECLARE
125 X : NREC;
127 FUNCTION VALUE RETURN NREC IS
128 BEGIN
129 IF EQUAL (5, 5) THEN
130 RETURN X;
131 ELSE
132 RETURN X;
133 END IF;
134 END VALUE;
135 BEGIN
136 IF OBJ_XCP THEN
137 FAILED ("NO CHECK DURING DECLARATION " &
138 "OF OBJECT OF TYPE NREC - " &
139 TAG);
140 ELSIF X /= VALUE THEN
141 FAILED ("INCORRECT VALUE FOR OBJECT " &
142 "OF TYPE NREC - " & TAG);
143 END IF;
144 END;
145 EXCEPTION
146 WHEN CONSTRAINT_ERROR =>
147 IF NOT OBJ_XCP THEN
148 FAILED ("IMPROPER CONSTRAINT CHECKED " &
149 "DURING DECLARATION OF OBJECT " &
150 "OF TYPE NREC - " & TAG);
151 END IF;
152 END;
153 EXCEPTION
154 WHEN CONSTRAINT_ERROR =>
155 FAILED ("CONSTRAINT IMPROPERLY CHECKED " &
156 "DURING DECLARATION OF NREC - " & TAG);
157 END;
158 BEGIN
159 SEQUENCE_NUMBER := 1;
160 DECLARE
161 TYPE REC_DEF (D3 : INTEGER := 1) IS
162 RECORD
163 C1 : REC (D3, 0);
164 END RECORD;
166 PACKAGE PACK1 IS NEW ARRAY_COMP_CHK (REC_DEF,
167 OBJ_XCP => TRUE,
168 TAG => "PACK1");
170 PROCEDURE PROC1 IS NEW REC_COMP_CHK (REC_DEF);
171 BEGIN
172 PROC1 (OBJ_XCP => TRUE, TAG => "PROC1");
173 END;
175 SEQUENCE_NUMBER := 2;
176 DECLARE
177 TYPE ARR_DEF (D3 : INTEGER := IDENT_INT(1)) IS
178 RECORD
179 C1 : MY_ARR (0..D3);
180 END RECORD;
182 PACKAGE PACK2 IS NEW ARRAY_COMP_CHK (ARR_DEF,
183 OBJ_XCP => TRUE,
184 TAG => "PACK2");
186 PROCEDURE PROC2 IS NEW REC_COMP_CHK (ARR_DEF);
187 BEGIN
188 PROC2 (OBJ_XCP => TRUE, TAG => "PROC2");
189 END;
191 SEQUENCE_NUMBER := 3;
192 DECLARE
193 TYPE VAR_REC_DEF1 (D3 : INTEGER := 1) IS
194 RECORD
195 CASE D3 IS
196 WHEN -5..10 =>
197 C1 : REC (D3, IDENT_INT(11));
198 WHEN OTHERS =>
199 C2 : INTEGER := IDENT_INT(5);
200 END CASE;
201 END RECORD;
203 PACKAGE PACK3 IS NEW ARRAY_COMP_CHK (VAR_REC_DEF1,
204 OBJ_XCP => TRUE,
205 TAG => "PACK3");
207 PROCEDURE PROC3 IS NEW REC_COMP_CHK (VAR_REC_DEF1);
208 BEGIN
209 PROC3 (OBJ_XCP => TRUE, TAG => "PROC3");
210 END;
212 SEQUENCE_NUMBER := 4;
213 DECLARE
214 TYPE VAR_REC_DEF6 (D3 : INTEGER := IDENT_INT(-6)) IS
215 RECORD
216 CASE D3 IS
217 WHEN -5..10 =>
218 C1 : REC (D3, IDENT_INT(11));
219 WHEN OTHERS =>
220 C2 : INTEGER := IDENT_INT(5);
221 END CASE;
222 END RECORD;
224 PACKAGE PACK4 IS NEW ARRAY_COMP_CHK (VAR_REC_DEF6,
225 OBJ_XCP => FALSE,
226 TAG => "PACK4");
228 PROCEDURE PROC4 IS NEW REC_COMP_CHK (VAR_REC_DEF6);
229 BEGIN
230 PROC4 (OBJ_XCP => FALSE, TAG => "PROC4");
231 END;
233 SEQUENCE_NUMBER := 5;
234 DECLARE
235 TYPE VAR_REC_DEF11 (D3 : INTEGER := 11) IS
236 RECORD
237 CASE D3 IS
238 WHEN -5..10 =>
239 C1 : REC (D3, IDENT_INT(11));
240 WHEN OTHERS =>
241 C2 : INTEGER := IDENT_INT(5);
242 END CASE;
243 END RECORD;
245 PACKAGE PACK5 IS NEW ARRAY_COMP_CHK (VAR_REC_DEF11,
246 OBJ_XCP => FALSE,
247 TAG => "PACK5");
249 PROCEDURE PROC5 IS NEW REC_COMP_CHK (VAR_REC_DEF11);
250 BEGIN
251 PROC5 (OBJ_XCP => FALSE, TAG => "PROC5");
252 END;
254 SEQUENCE_NUMBER := 6;
255 DECLARE
256 TYPE VAR_ARR_DEF1 (D3 : INTEGER := IDENT_INT(1)) IS
257 RECORD
258 CASE D3 IS
259 WHEN -5..10 =>
260 C1 : MY_ARR(D3..IDENT_INT(11));
261 WHEN OTHERS =>
262 C2 : INTEGER := IDENT_INT(5);
263 END CASE;
264 END RECORD;
266 PACKAGE PACK6 IS NEW ARRAY_COMP_CHK (VAR_ARR_DEF1,
267 OBJ_XCP => TRUE,
268 TAG => "PACK6");
270 PROCEDURE PROC6 IS NEW REC_COMP_CHK (VAR_ARR_DEF1);
271 BEGIN
272 PROC6 (OBJ_XCP => TRUE, TAG => "PROC6");
273 END;
275 SEQUENCE_NUMBER := 7;
276 DECLARE
277 TYPE VAR_ARR_DEF6 (D3 : INTEGER := -6) IS
278 RECORD
279 CASE D3 IS
280 WHEN -5..10 =>
281 C1 : MY_ARR(D3..IDENT_INT(11));
282 WHEN OTHERS =>
283 C2 : INTEGER := IDENT_INT(5);
284 END CASE;
285 END RECORD;
287 PACKAGE PACK7 IS NEW ARRAY_COMP_CHK (VAR_ARR_DEF6,
288 OBJ_XCP => FALSE,
289 TAG => "PACK7");
291 PROCEDURE PROC7 IS NEW REC_COMP_CHK (VAR_ARR_DEF6);
292 BEGIN
293 PROC7 (OBJ_XCP => FALSE, TAG => "PROC7");
294 END;
296 SEQUENCE_NUMBER := 8;
297 DECLARE
298 TYPE VAR_ARR_DEF11 (D3 : INTEGER := IDENT_INT(11)) IS
299 RECORD
300 CASE D3 IS
301 WHEN -5..10 =>
302 C1 : MY_ARR(D3..IDENT_INT(11));
303 WHEN OTHERS =>
304 C2 : INTEGER := IDENT_INT(5);
305 END CASE;
306 END RECORD;
308 PACKAGE PACK8 IS NEW ARRAY_COMP_CHK (VAR_ARR_DEF11,
309 OBJ_XCP => FALSE,
310 TAG => "PACK8");
312 PROCEDURE PROC8 IS NEW REC_COMP_CHK (VAR_ARR_DEF11);
313 BEGIN
314 PROC8 (OBJ_XCP => FALSE, TAG => "PROC8");
315 END;
316 EXCEPTION
317 WHEN OTHERS =>
318 FAILED ("UNEXPECTED EXCEPTION RAISED DURING " &
319 "DECLARATION / INSTANTIATION ELABORATION - " &
320 INTEGER'IMAGE (SEQUENCE_NUMBER));
321 END;
323 RESULT;
324 END C37213K;