3 -- Grant of Unlimited Rights
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
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.
26 -- CHECK THAT THE REQUIRED PREDEFINED OPERATIONS ARE DECLARED
27 -- (IMPLICITLY) FOR DERIVED ONE-DIMENSIONAL ARRAY TYPES
28 -- WHOSE COMPONENT TYPE IS A DISCRETE TYPE.
31 -- JRK 9/12/86 CREATED ORIGINAL TEST.
32 -- PWN 11/30/94 REMOVED 'BASE USE ILLEGAL IN ADA 9X.
34 WITH SYSTEM
; USE SYSTEM
;
35 WITH REPORT
; USE REPORT
;
39 SUBTYPE COMPONENT
IS INTEGER;
43 FIRST
: CONSTANT := 0;
44 LAST
: CONSTANT := 100;
46 SUBTYPE INDEX
IS INTEGER RANGE FIRST
.. LAST
;
48 TYPE PARENT
IS ARRAY (INDEX
RANGE <>) OF COMPONENT
;
50 FUNCTION CREATE
( F
, L
: INDEX
;
52 DUMMY
: PARENT
-- TO RESOLVE OVERLOADING.
59 TYPE T
IS NEW PARENT
(IDENT_INT
(5) .. IDENT_INT
(7));
61 TYPE ARRT
IS ARRAY (INTEGER RANGE <>) OF COMPONENT
;
62 SUBTYPE ARR
IS ARRT
(2 .. 4);
64 X
: T
:= (OTHERS => 2);
65 W
: PARENT
(5 .. 7) := (OTHERS => 2);
68 U
: ARR
:= (OTHERS => C
);
71 PROCEDURE A
(X
: ADDRESS
) IS
73 B
:= IDENT_BOOL
(TRUE);
76 FUNCTION V
RETURN T
IS
101 FUNCTION IDENT
(X
: T
) RETURN T
IS
103 IF EQUAL
(X
'LENGTH, X
'LENGTH) THEN
104 RETURN X
; -- ALWAYS EXECUTED.
106 RETURN (OTHERS => -1);
110 TEST
("C34005D", "CHECK THAT THE REQUIRED PREDEFINED OPERATIONS " &
111 "ARE DECLARED (IMPLICITLY) FOR DERIVED " &
112 "ONE-DIMENSIONAL ARRAY TYPES WHOSE COMPONENT " &
113 "TYPE IS A DISCRETE TYPE");
115 X
:= IDENT
((1, 2, 3));
116 IF X
/= (1, 2, 3) THEN
117 FAILED
("INCORRECT :=");
120 IF T
'(X) /= (1, 2, 3) THEN
121 FAILED ("INCORRECT QUALIFICATION");
124 IF T (X) /= (1, 2, 3) THEN
125 FAILED ("INCORRECT SELF CONVERSION");
131 IF T (W) /= (1, 2, 3) THEN
132 FAILED ("INCORRECT CONVERSION FROM PARENT");
136 IF PARENT (X) /= (1, 2, 3) OR
137 PARENT (CREATE (2, 3, 4, X)) /= (4, 5) THEN
138 FAILED ("INCORRECT CONVERSION TO PARENT");
141 WHEN CONSTRAINT_ERROR =>
142 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 1");
144 FAILED ("CALL TO CREATE RAISED EXCEPTION - 1");
150 IF T (U) /= (1, 2, 3) THEN
151 FAILED ("INCORRECT CONVERSION FROM ARRAY");
155 IF ARR (X) /= (1, 2, 3) OR
156 ARRT (CREATE (1, 2, 3, X)) /= (3, 4) THEN
157 FAILED ("INCORRECT CONVERSION TO ARRAY");
160 WHEN CONSTRAINT_ERROR =>
161 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 2");
163 FAILED ("CALL TO CREATE RAISED EXCEPTION - 2");
166 IF IDENT ((1, 2, 3)) /= (1, 2, 3) OR
168 FAILED ("INCORRECT AGGREGATE");
172 IF X (IDENT_INT (5)) /= 1 OR
173 CREATE (2, 3, 4, X) (3) /= 5 THEN
174 FAILED ("INCORRECT INDEX (VALUE)");
177 WHEN CONSTRAINT_ERROR =>
178 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 3");
180 FAILED ("CALL TO CREATE RAISED EXCEPTION - 3");
183 X (IDENT_INT (7)) := 4;
184 IF X /= (1, 2, 4) THEN
185 FAILED ("INCORRECT INDEX (ASSIGNMENT)");
189 X := IDENT ((1, 2, 3));
190 IF X (IDENT_INT (6) .. IDENT_INT (7)) /= (2, 3) OR
191 CREATE (1, 4, 4, X) (1 .. 3) /= (4, 5, 6) THEN
192 FAILED ("INCORRECT SLICE (VALUE)");
195 WHEN CONSTRAINT_ERROR =>
196 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 4");
198 FAILED ("CALL TO CREATE RAISED EXCEPTION - 4");
201 X (IDENT_INT (5) .. IDENT_INT (6)) := (4, 5);
202 IF X /= (4, 5, 3) THEN
203 FAILED ("INCORRECT SLICE (ASSIGNMENT)");
206 X := IDENT ((1, 2, 3));
207 IF X = IDENT ((1, 2, 4)) OR X = (1, 2) THEN
208 FAILED ("INCORRECT =");
211 IF X /= IDENT ((1, 2, 3)) OR NOT (X /= (2, 3)) THEN
212 FAILED ("INCORRECT /=");
215 IF X < IDENT ((1, 2, 3)) OR X < (1, 2) THEN
216 FAILED ("INCORRECT <");
219 IF X > IDENT ((1, 2, 3)) OR X > (1, 3) THEN
220 FAILED ("INCORRECT >");
223 IF X <= IDENT ((1, 2, 2)) OR X <= (1, 2, 2, 4) THEN
224 FAILED ("INCORRECT <=");
227 IF X >= IDENT ((1, 2, 4)) OR X >= (1, 2, 3, 1) THEN
228 FAILED ("INCORRECT >=");
231 IF NOT (X IN T) OR (1, 2) IN T THEN
232 FAILED ("INCORRECT ""IN""");
235 IF X NOT IN T OR NOT ((1, 2) NOT IN T) THEN
236 FAILED ("INCORRECT ""NOT IN""");
240 IF X & (4, 5, 6) /= (1, 2, 3, 4, 5, 6) OR
241 CREATE (2, 3, 2, X) & (4, 5) /= (2, 3, 4, 5) THEN
242 FAILED ("INCORRECT & (ARRAY, ARRAY)");
245 WHEN CONSTRAINT_ERROR =>
246 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 5");
248 FAILED ("CALL TO CREATE RAISED EXCEPTION - 5");
252 IF X & 4 /= (1, 2, 3, 4) OR
253 CREATE (2, 3, 2, X) & 4 /= (2, 3, 4) THEN
254 FAILED ("INCORRECT & (ARRAY, COMPONENT)");
257 WHEN CONSTRAINT_ERROR =>
258 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 6");
260 FAILED ("CALL TO CREATE RAISED EXCEPTION - 6");
264 IF 4 & X /= (4, 1, 2, 3) OR
265 2 & CREATE (2, 3, 3, X) /= (2, 3, 4) THEN
266 FAILED ("INCORRECT & (COMPONENT, ARRAY)");
269 WHEN CONSTRAINT_ERROR =>
270 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 7");
272 FAILED ("CALL TO CREATE RAISED EXCEPTION - 7");
280 IF C & 3 /= CREATE (2, 3, 2, X) THEN
281 FAILED ("INCORRECT & (COMPONENT, COMPONENT)");
284 WHEN CONSTRAINT_ERROR =>
285 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 8");
287 FAILED ("CALL TO CREATE RAISED EXCEPTION - 8");
293 FAILED ("INCORRECT 'ADDRESS
");
297 FAILED ("INCORRECT
TYPE'FIRST");
301 FAILED ("INCORRECT OBJECT
'FIRST");
305 FAILED ("INCORRECT VALUE
'FIRST");
308 IF T'FIRST (N) /= 5 THEN
309 FAILED ("INCORRECT
TYPE'FIRST (N
)");
312 IF X'FIRST (N) /= 5 THEN
313 FAILED ("INCORRECT OBJECT
'FIRST (N
)");
316 IF V'FIRST (N) /= 5 THEN
317 FAILED ("INCORRECT VALUE
'FIRST (N
)");
321 FAILED ("INCORRECT
TYPE'LAST");
325 FAILED ("INCORRECT OBJECT
'LAST");
329 FAILED ("INCORRECT VALUE
'LAST");
332 IF T'LAST (N) /= 7 THEN
333 FAILED ("INCORRECT
TYPE'LAST (N
)");
336 IF X'LAST (N) /= 7 THEN
337 FAILED ("INCORRECT OBJECT
'LAST (N
)");
340 IF V'LAST (N) /= 7 THEN
341 FAILED ("INCORRECT VALUE
'LAST (N
)");
344 IF T'LENGTH /= 3 THEN
345 FAILED ("INCORRECT
TYPE'LENGTH");
348 IF X'LENGTH /= 3 THEN
349 FAILED ("INCORRECT OBJECT
'LENGTH");
352 IF V'LENGTH /= 3 THEN
353 FAILED ("INCORRECT VALUE
'LENGTH");
356 IF T'LENGTH (N) /= 3 THEN
357 FAILED ("INCORRECT
TYPE'LENGTH (N
)");
360 IF X'LENGTH (N) /= 3 THEN
361 FAILED ("INCORRECT OBJECT
'LENGTH (N
)");
364 IF V'LENGTH (N) /= 3 THEN
365 FAILED ("INCORRECT VALUE
'LENGTH (N
)");
369 Y : PARENT (T'RANGE);
371 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
372 FAILED ("INCORRECT
TYPE'RANGE");
377 Y : PARENT (X'RANGE);
379 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
380 FAILED ("INCORRECT OBJECT
'RANGE");
385 Y : PARENT (V'RANGE);
387 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
388 FAILED ("INCORRECT VALUE
'RANGE");
393 Y : PARENT (T'RANGE (N));
395 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
396 FAILED ("INCORRECT
TYPE'RANGE (N
)");
401 Y : PARENT (X'RANGE (N));
403 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
404 FAILED ("INCORRECT OBJECT
'RANGE (N
)");
409 Y : PARENT (V'RANGE (N));
411 IF Y'FIRST /= 5 OR Y'LAST /= 7 THEN
412 FAILED ("INCORRECT VALUE
'RANGE (N
)");
416 IF T'SIZE < T'LENGTH * COMPONENT'SIZE THEN
417 FAILED ("INCORRECT
TYPE'SIZE");
420 IF X'SIZE < X'LENGTH * COMPONENT'SIZE THEN
421 FAILED ("INCORRECT OBJECT
'SIZE");