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 MULTI-DIMENSIONAL ARRAY TYPES WHOSE
28 -- COMPONENT TYPE IS A NON-LIMITED TYPE.
31 -- JRK 9/17/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 := 10;
46 SUBTYPE INDEX
IS INTEGER RANGE FIRST
.. LAST
;
48 TYPE PARENT
IS ARRAY (INDEX
RANGE <>, INDEX
RANGE <>) OF
51 FUNCTION CREATE
( F1
, L1
: INDEX
;
54 DUMMY
: PARENT
-- TO RESOLVE OVERLOADING.
61 TYPE T
IS NEW PARENT
(IDENT_INT
(4) .. IDENT_INT
(5),
62 IDENT_INT
(6) .. IDENT_INT
(8));
64 TYPE ARRT
IS ARRAY (INTEGER RANGE <>, INTEGER RANGE <>) OF
67 SUBTYPE ARR
IS ARRT
(8 .. 9, 2 .. 4);
69 X
: T
:= (OTHERS => (OTHERS => 2));
70 W
: PARENT
(4 .. 5, 6 .. 8) := (OTHERS => (OTHERS => 2));
73 U
: ARR
:= (OTHERS => (OTHERS => C
));
76 PROCEDURE A
(X
: ADDRESS
) IS
78 B
:= IDENT_BOOL
(TRUE);
81 FUNCTION V
RETURN T
IS
83 RETURN (OTHERS => (OTHERS => C
));
95 A
: PARENT
(F1
.. L1
, F2
.. L2
);
98 FOR I
IN F1
.. L1
LOOP
99 FOR J
IN F2
.. L2
LOOP
109 FUNCTION IDENT
(X
: T
) RETURN T
IS
111 IF EQUAL
(X
'LENGTH, X
'LENGTH) THEN
112 RETURN X
; -- ALWAYS EXECUTED.
114 RETURN (OTHERS => (OTHERS => -1));
118 TEST
("C34005M", "CHECK THAT THE REQUIRED PREDEFINED OPERATIONS " &
119 "ARE DECLARED (IMPLICITLY) FOR DERIVED " &
120 "MULTI-DIMENSIONAL ARRAY TYPES WHOSE COMPONENT " &
121 "TYPE IS A NON-LIMITED TYPE");
123 X
:= IDENT
(((1, 2, 3), (4, 5, 6)));
124 IF X
/= ((1, 2, 3), (4, 5, 6)) THEN
125 FAILED
("INCORRECT :=");
128 IF T
'(X) /= ((1, 2, 3), (4, 5, 6)) THEN
129 FAILED ("INCORRECT QUALIFICATION");
132 IF T (X) /= ((1, 2, 3), (4, 5, 6)) THEN
133 FAILED ("INCORRECT SELF CONVERSION");
137 W := ((1, 2, 3), (4, 5, 6));
139 IF T (W) /= ((1, 2, 3), (4, 5, 6)) THEN
140 FAILED ("INCORRECT CONVERSION FROM PARENT");
144 IF PARENT (X) /= ((1, 2, 3), (4, 5, 6)) OR
145 PARENT (CREATE (6, 9, 2, 3, 4, X)) /=
146 ((4, 5), (6, 7), (8, 9), (10, 11)) THEN
147 FAILED ("INCORRECT CONVERSION TO PARENT");
150 WHEN CONSTRAINT_ERROR =>
151 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 1");
153 FAILED ("CALL TO CREATE RAISED EXCEPTION - 1");
157 U := ((1, 2, 3), (4, 5, 6));
159 IF T (U) /= ((1, 2, 3), (4, 5, 6)) THEN
160 FAILED ("INCORRECT CONVERSION FROM ARRAY");
164 IF ARR (X) /= ((1, 2, 3), (4, 5, 6)) OR
165 ARRT (CREATE (7, 9, 2, 5, 3, X)) /=
166 ((3, 4, 5, 6), (7, 8, 9, 10), (11, 12, 13, 14)) THEN
167 FAILED ("INCORRECT CONVERSION TO ARRAY");
170 WHEN CONSTRAINT_ERROR =>
171 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 2");
173 FAILED ("CALL TO CREATE RAISED EXCEPTION - 2");
176 IF IDENT (((1, 2, 3), (4, 5, 6))) /= ((1, 2, 3), (4, 5, 6)) OR
177 X = ((1, 2), (3, 4), (5, 6)) THEN
178 FAILED ("INCORRECT AGGREGATE");
182 IF X (IDENT_INT (4), IDENT_INT (6)) /= 1 OR
183 CREATE (6, 9, 2, 3, 4, X) (9, 3) /= 11 THEN
184 FAILED ("INCORRECT INDEX (VALUE)");
187 WHEN CONSTRAINT_ERROR =>
188 FAILED ("CALL TO CREATE RAISED CONSTRAINT_ERROR - 3");
190 FAILED ("CALL TO CREATE RAISED EXCEPTION - 3");
193 X (IDENT_INT (5), IDENT_INT (8)) := 7;
194 IF X /= ((1, 2, 3), (4, 5, 7)) THEN
195 FAILED ("INCORRECT INDEX (ASSIGNMENT)");
198 X := IDENT (((1, 2, 3), (4, 5, 6)));
199 IF X = IDENT (((1, 2, 3), (4, 5, 7))) OR
200 X = ((1, 2), (4, 5)) THEN
201 FAILED ("INCORRECT =");
204 IF X /= IDENT (((1, 2, 3), (4, 5, 6))) OR
205 NOT (X /= ((1, 2, 3), (4, 5, 6), (7, 8, 9))) THEN
206 FAILED ("INCORRECT /=");
209 IF NOT (X IN T) OR ((1, 2), (3, 4)) IN T THEN
210 FAILED ("INCORRECT ""IN""");
214 NOT (((1, 2, 3), (4, 5, 6), (7, 8, 9)) NOT IN T) THEN
215 FAILED ("INCORRECT ""NOT IN""");
221 FAILED ("INCORRECT 'ADDRESS
");
225 FAILED ("INCORRECT
TYPE'FIRST");
229 FAILED ("INCORRECT OBJECT
'FIRST");
233 FAILED ("INCORRECT VALUE
'FIRST");
236 IF T'FIRST (N) /= 6 THEN
237 FAILED ("INCORRECT
TYPE'FIRST (N
)");
240 IF X'FIRST (N) /= 6 THEN
241 FAILED ("INCORRECT OBJECT
'FIRST (N
)");
244 IF V'FIRST (N) /= 6 THEN
245 FAILED ("INCORRECT VALUE
'FIRST (N
)");
249 FAILED ("INCORRECT
TYPE'LAST");
253 FAILED ("INCORRECT OBJECT
'LAST");
257 FAILED ("INCORRECT VALUE
'LAST");
260 IF T'LAST (N) /= 8 THEN
261 FAILED ("INCORRECT
TYPE'LAST (N
)");
264 IF X'LAST (N) /= 8 THEN
265 FAILED ("INCORRECT OBJECT
'LAST (N
)");
268 IF V'LAST (N) /= 8 THEN
269 FAILED ("INCORRECT VALUE
'LAST (N
)");
272 IF T'LENGTH /= 2 THEN
273 FAILED ("INCORRECT
TYPE'LENGTH");
276 IF X'LENGTH /= 2 THEN
277 FAILED ("INCORRECT OBJECT
'LENGTH");
280 IF V'LENGTH /= 2 THEN
281 FAILED ("INCORRECT VALUE
'LENGTH");
284 IF T'LENGTH (N) /= 3 THEN
285 FAILED ("INCORRECT
TYPE'LENGTH (N
)");
288 IF X'LENGTH (N) /= 3 THEN
289 FAILED ("INCORRECT OBJECT
'LENGTH (N
)");
292 IF V'LENGTH (N) /= 3 THEN
293 FAILED ("INCORRECT VALUE
'LENGTH (N
)");
297 Y : PARENT (T'RANGE, 1 .. 3);
299 IF Y'FIRST /= 4 OR Y'LAST /= 5 THEN
300 FAILED ("INCORRECT
TYPE'RANGE");
305 Y : PARENT (X'RANGE, 1 .. 3);
307 IF Y'FIRST /= 4 OR Y'LAST /= 5 THEN
308 FAILED ("INCORRECT OBJECT
'RANGE");
313 Y : PARENT (V'RANGE, 1 .. 3);
315 IF Y'FIRST /= 4 OR Y'LAST /= 5 THEN
316 FAILED ("INCORRECT VALUE
'RANGE");
321 Y : PARENT (1 .. 2, T'RANGE (N));
323 IF Y'FIRST (N) /= 6 OR Y'LAST (N) /= 8 THEN
324 FAILED ("INCORRECT
TYPE'RANGE (N
)");
329 Y : PARENT (1 .. 2, X'RANGE (N));
331 IF Y'FIRST (N) /= 6 OR Y'LAST (N) /= 8 THEN
332 FAILED ("INCORRECT OBJECT
'RANGE (N
)");
337 Y : PARENT (1 .. 2, V'RANGE (N));
339 IF Y'FIRST (N) /= 6 OR Y'LAST (N) /= 8 THEN
340 FAILED ("INCORRECT VALUE
'RANGE (N
)");
344 IF T'SIZE < T'LENGTH * T'LENGTH (N) * COMPONENT'SIZE THEN
345 FAILED ("INCORRECT
TYPE'SIZE");
348 IF X'SIZE < X'LENGTH * X'LENGTH (N) * COMPONENT'SIZE THEN
349 FAILED ("INCORRECT OBJECT
'SIZE");