Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / ada / acats / tests / c3 / c34005g.ada
blobfd8f8ffbf934f3c79e8ff079de21a483932acf83
1 -- C34005G.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 THAT THE REQUIRED PREDEFINED OPERATIONS ARE DECLARED
27 -- (IMPLICITLY) FOR DERIVED ONE-DIMENSIONAL ARRAY TYPES
28 -- WHOSE COMPONENT TYPE IS A CHARACTER TYPE.
30 -- HISTORY:
31 -- JRK 9/15/86 CREATED ORIGINAL TEST.
32 -- RJW 8/21/89 MODIFIED CHECKS FOR OBJECT AND TYPE SIZES.
33 -- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
35 WITH SYSTEM; USE SYSTEM;
36 WITH REPORT; USE REPORT;
38 PROCEDURE C34005G IS
40 TYPE COMPONENT IS NEW CHARACTER;
42 PACKAGE PKG IS
44 FIRST : CONSTANT := 0;
45 LAST : CONSTANT := 100;
47 SUBTYPE INDEX IS INTEGER RANGE FIRST .. LAST;
49 TYPE PARENT IS ARRAY (INDEX RANGE <>) OF COMPONENT;
51 FUNCTION CREATE ( F, L : INDEX;
52 C : COMPONENT;
53 DUMMY : PARENT -- TO RESOLVE OVERLOADING.
54 ) RETURN PARENT;
56 END PKG;
58 USE PKG;
60 TYPE T IS NEW PARENT (IDENT_INT (5) .. IDENT_INT (7));
62 TYPE ARRT IS ARRAY (INTEGER RANGE <>) OF COMPONENT;
63 SUBTYPE ARR IS ARRT (2 .. 4);
65 X : T := (OTHERS => 'B');
66 W : PARENT (5 .. 7) := (OTHERS => 'B');
67 C : COMPONENT := 'A';
68 B : BOOLEAN := FALSE;
69 U : ARR := (OTHERS => C);
70 N : CONSTANT := 1;
72 PROCEDURE A (X : ADDRESS) IS
73 BEGIN
74 B := IDENT_BOOL (TRUE);
75 END A;
77 FUNCTION V RETURN T IS
78 BEGIN
79 RETURN (OTHERS => C);
80 END V;
82 PACKAGE BODY PKG IS
84 FUNCTION CREATE
85 ( F, L : INDEX;
86 C : COMPONENT;
87 DUMMY : PARENT
88 ) RETURN PARENT
90 A : PARENT (F .. L);
91 B : COMPONENT := C;
92 BEGIN
93 FOR I IN F .. L LOOP
94 A (I) := B;
95 B := COMPONENT'SUCC (B);
96 END LOOP;
97 RETURN A;
98 END CREATE;
100 END PKG;
102 FUNCTION IDENT (X : T) RETURN T IS
103 BEGIN
104 IF EQUAL (X'LENGTH, X'LENGTH) THEN
105 RETURN X; -- ALWAYS EXECUTED.
106 END IF;
107 RETURN (OTHERS => '-');
108 END IDENT;
110 BEGIN
111 TEST ("C34005G", "CHECK THAT THE REQUIRED PREDEFINED OPERATIONS " &
112 "ARE DECLARED (IMPLICITLY) FOR DERIVED " &
113 "ONE-DIMENSIONAL ARRAY TYPES WHOSE COMPONENT " &
114 "TYPE IS A CHARACTER TYPE");
116 X := IDENT ("ABC");
117 IF X /= "ABC" THEN
118 FAILED ("INCORRECT :=");
119 END IF;
121 IF T'(X) /= "ABC" THEN
122 FAILED ("INCORRECT QUALIFICATION");
123 END IF;
125 IF T (X) /= "ABC" THEN
126 FAILED ("INCORRECT SELF CONVERSION");
127 END IF;
129 IF EQUAL (3, 3) THEN
130 W := "ABC";
131 END IF;
132 IF T (W) /= "ABC" THEN
133 FAILED ("INCORRECT CONVERSION FROM PARENT");
134 END IF;
136 BEGIN
137 IF PARENT (X) /= "ABC" OR
138 PARENT (CREATE (2, 3, 'D', X)) /= "DE" THEN
139 FAILED ("INCORRECT CONVERSION TO PARENT");
140 END IF;
141 EXCEPTION
142 WHEN CONSTRAINT_ERROR =>
143 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 1");
144 WHEN OTHERS =>
145 FAILED ("CALL TO CREATE RAISED EXCEPTION - 1");
146 END;
148 IF EQUAL (3, 3) THEN
149 U := "ABC";
150 END IF;
151 IF T (U) /= "ABC" THEN
152 FAILED ("INCORRECT CONVERSION FROM ARRAY");
153 END IF;
155 BEGIN
156 IF ARR (X) /= "ABC" OR
157 ARRT (CREATE (1, 2, 'C', X)) /= "CD" THEN
158 FAILED ("INCORRECT CONVERSION TO ARRAY");
159 END IF;
160 EXCEPTION
161 WHEN CONSTRAINT_ERROR =>
162 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 2");
163 WHEN OTHERS =>
164 FAILED ("CALL TO CREATE RAISED EXCEPTION - 2");
165 END;
167 IF IDENT ("ABC") /= ('A', 'B', 'C') OR
168 X = "AB" THEN
169 FAILED ("INCORRECT STRING LITERAL");
170 END IF;
172 IF IDENT (('A', 'B', 'C')) /= "ABC" OR
173 X = ('A', 'B') THEN
174 FAILED ("INCORRECT AGGREGATE");
175 END IF;
177 BEGIN
178 IF X (IDENT_INT (5)) /= 'A' OR
179 CREATE (2, 3, 'D', X) (3) /= 'E' THEN
180 FAILED ("INCORRECT INDEX (VALUE)");
181 END IF;
182 EXCEPTION
183 WHEN CONSTRAINT_ERROR =>
184 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 3");
185 WHEN OTHERS =>
186 FAILED ("CALL TO CREATE RAISED EXCEPTION - 3");
187 END;
189 X (IDENT_INT (7)) := 'D';
190 IF X /= "ABD" THEN
191 FAILED ("INCORRECT INDEX (ASSIGNMENT)");
192 END IF;
194 BEGIN
195 X := IDENT ("ABC");
196 IF X (IDENT_INT (6) .. IDENT_INT (7)) /= "BC" OR
197 CREATE (1, 4, 'D', X) (1 .. 3) /= "DEF" THEN
198 FAILED ("INCORRECT SLICE (VALUE)");
199 END IF;
200 EXCEPTION
201 WHEN CONSTRAINT_ERROR =>
202 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 4");
203 WHEN OTHERS =>
204 FAILED ("CALL TO CREATE RAISED EXCEPTION - 4");
205 END;
207 X (IDENT_INT (5) .. IDENT_INT (6)) := "DE";
208 IF X /= "DEC" THEN
209 FAILED ("INCORRECT SLICE (ASSIGNMENT)");
210 END IF;
212 X := IDENT ("ABC");
213 IF X = IDENT ("ABD") OR X = "AB" THEN
214 FAILED ("INCORRECT =");
215 END IF;
217 IF X /= IDENT ("ABC") OR NOT (X /= "BC") THEN
218 FAILED ("INCORRECT /=");
219 END IF;
221 IF X < IDENT ("ABC") OR X < "AB" THEN
222 FAILED ("INCORRECT <");
223 END IF;
225 IF X > IDENT ("ABC") OR X > "AC" THEN
226 FAILED ("INCORRECT >");
227 END IF;
229 IF X <= IDENT ("ABB") OR X <= "ABBD" THEN
230 FAILED ("INCORRECT <=");
231 END IF;
233 IF X >= IDENT ("ABD") OR X >= "ABCA" THEN
234 FAILED ("INCORRECT >=");
235 END IF;
237 IF NOT (X IN T) OR "AB" IN T THEN
238 FAILED ("INCORRECT ""IN""");
239 END IF;
241 IF X NOT IN T OR NOT ("AB" NOT IN T) THEN
242 FAILED ("INCORRECT ""NOT IN""");
243 END IF;
245 BEGIN
246 IF X & "DEF" /= "ABCDEF" OR
247 CREATE (2, 3, 'B', X) & "DE" /= "BCDE" THEN
248 FAILED ("INCORRECT & (ARRAY, ARRAY)");
249 END IF;
250 EXCEPTION
251 WHEN CONSTRAINT_ERROR =>
252 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 5");
253 WHEN OTHERS =>
254 FAILED ("CALL TO CREATE RAISED EXCEPTION - 5");
255 END;
257 BEGIN
258 IF X & 'D' /= "ABCD" OR
259 CREATE (2, 3, 'B', X) & 'D' /= "BCD" THEN
260 FAILED ("INCORRECT & (ARRAY, COMPONENT)");
261 END IF;
262 EXCEPTION
263 WHEN CONSTRAINT_ERROR =>
264 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 6");
265 WHEN OTHERS =>
266 FAILED ("CALL TO CREATE RAISED EXCEPTION - 6");
267 END;
269 BEGIN
270 IF 'D' & X /= "DABC" OR
271 'B' & CREATE (2, 3, 'C', X) /= "BCD" THEN
272 FAILED ("INCORRECT & (COMPONENT, ARRAY)");
273 END IF;
274 EXCEPTION
275 WHEN CONSTRAINT_ERROR =>
276 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 7");
277 WHEN OTHERS =>
278 FAILED ("CALL TO CREATE RAISED EXCEPTION - 7");
279 END;
281 IF EQUAL (3, 3) THEN
282 C := 'B';
283 END IF;
285 BEGIN
286 IF C & 'C' /= CREATE (2, 3, 'B', X) THEN
287 FAILED ("INCORRECT & (COMPONENT, COMPONENT)");
288 END IF;
289 EXCEPTION
290 WHEN CONSTRAINT_ERROR =>
291 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 8");
292 WHEN OTHERS =>
293 FAILED ("CALL TO CREATE RAISED EXCEPTION - 8");
294 END;
296 B := FALSE;
297 A (X'ADDRESS);
298 IF NOT B THEN
299 FAILED ("INCORRECT 'ADDRESS");
300 END IF;
302 IF T'FIRST /= 5 THEN
303 FAILED ("INCORRECT TYPE'FIRST");
304 END IF;
306 IF X'FIRST /= 5 THEN
307 FAILED ("INCORRECT OBJECT'FIRST");
308 END IF;
310 IF V'FIRST /= 5 THEN
311 FAILED ("INCORRECT VALUE'FIRST");
312 END IF;
314 IF T'FIRST (N) /= 5 THEN
315 FAILED ("INCORRECT TYPE'FIRST (N)");
316 END IF;
318 IF X'FIRST (N) /= 5 THEN
319 FAILED ("INCORRECT OBJECT'FIRST (N)");
320 END IF;
322 IF V'FIRST (N) /= 5 THEN
323 FAILED ("INCORRECT VALUE'FIRST (N)");
324 END IF;
326 IF T'LAST /= 7 THEN
327 FAILED ("INCORRECT TYPE'LAST");
328 END IF;
330 IF X'LAST /= 7 THEN
331 FAILED ("INCORRECT OBJECT'LAST");
332 END IF;
334 IF V'LAST /= 7 THEN
335 FAILED ("INCORRECT VALUE'LAST");
336 END IF;
338 IF T'LAST (N) /= 7 THEN
339 FAILED ("INCORRECT TYPE'LAST (N)");
340 END IF;
342 IF X'LAST (N) /= 7 THEN
343 FAILED ("INCORRECT OBJECT'LAST (N)");
344 END IF;
346 IF V'LAST (N) /= 7 THEN
347 FAILED ("INCORRECT VALUE'LAST (N)");
348 END IF;
350 IF T'LENGTH /= 3 THEN
351 FAILED ("INCORRECT TYPE'LENGTH");
352 END IF;
354 IF X'LENGTH /= 3 THEN
355 FAILED ("INCORRECT OBJECT'LENGTH");
356 END IF;
358 IF V'LENGTH /= 3 THEN
359 FAILED ("INCORRECT VALUE'LENGTH");
360 END IF;
362 IF T'LENGTH (N) /= 3 THEN
363 FAILED ("INCORRECT TYPE'LENGTH (N)");
364 END IF;
366 IF X'LENGTH (N) /= 3 THEN
367 FAILED ("INCORRECT OBJECT'LENGTH (N)");
368 END IF;
370 IF V'LENGTH (N) /= 3 THEN
371 FAILED ("INCORRECT VALUE'LENGTH (N)");
372 END IF;
374 DECLARE
375 Y : PARENT (T'RANGE);
376 BEGIN
377 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
378 FAILED ("INCORRECT TYPE'RANGE");
379 END IF;
380 END;
382 DECLARE
383 Y : PARENT (X'RANGE);
384 BEGIN
385 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
386 FAILED ("INCORRECT OBJECT'RANGE");
387 END IF;
388 END;
390 DECLARE
391 Y : PARENT (V'RANGE);
392 BEGIN
393 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
394 FAILED ("INCORRECT VALUE'RANGE");
395 END IF;
396 END;
398 DECLARE
399 Y : PARENT (T'RANGE (N));
400 BEGIN
401 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
402 FAILED ("INCORRECT TYPE'RANGE (N)");
403 END IF;
404 END;
406 DECLARE
407 Y : PARENT (X'RANGE (N));
408 BEGIN
409 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
410 FAILED ("INCORRECT OBJECT'RANGE (N)");
411 END IF;
412 END;
414 DECLARE
415 Y : PARENT (V'RANGE (N));
416 BEGIN
417 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
418 FAILED ("INCORRECT VALUE'RANGE (N)");
419 END IF;
420 END;
422 RESULT;
423 END C34005G;