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, 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
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
46 WITH REPORT
; USE REPORT
;
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 " &
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;
69 PACKAGE ARRAY_COMP_CHK
IS END ARRAY_COMP_CHK
;
71 PACKAGE BODY ARRAY_COMP_CHK
IS
74 TYPE ARR
IS ARRAY (1..5) OF CONS
;
79 FUNCTION VALUE
RETURN ARR
IS
89 FAILED
("NO CHECK DURING DECLARATION " &
90 "OF OBJECT OF TYPE ARR - " & TAG
);
92 FAILED
("INCORRECT VALUE FOR OBJECT OF " &
97 WHEN CONSTRAINT_ERROR
=>
99 FAILED
("IMPROPER CONSTRAINT CHECKED " &
100 "DURING DECLARATION OF OBJECT " &
101 "OF TYPE ARR - " & TAG
);
105 WHEN CONSTRAINT_ERROR
=>
106 FAILED
("CONSTRAINT IMPROPERLY CHECKED " &
107 "DURING DECLARATION OF ARR - " & TAG
);
111 TYPE CONS
IS PRIVATE;
112 PROCEDURE REC_COMP_CHK
(OBJ_XCP
: BOOLEAN;
115 PROCEDURE REC_COMP_CHK
(OBJ_XCP
: BOOLEAN;
127 FUNCTION VALUE
RETURN NREC
IS
137 FAILED
("NO CHECK DURING DECLARATION " &
138 "OF OBJECT OF TYPE NREC - " &
140 ELSIF X
/= VALUE
THEN
141 FAILED
("INCORRECT VALUE FOR OBJECT " &
142 "OF TYPE NREC - " & TAG
);
146 WHEN CONSTRAINT_ERROR
=>
148 FAILED
("IMPROPER CONSTRAINT CHECKED " &
149 "DURING DECLARATION OF OBJECT " &
150 "OF TYPE NREC - " & TAG
);
154 WHEN CONSTRAINT_ERROR
=>
155 FAILED
("CONSTRAINT IMPROPERLY CHECKED " &
156 "DURING DECLARATION OF NREC - " & TAG
);
159 SEQUENCE_NUMBER
:= 1;
161 TYPE REC_DEF
(D3
: INTEGER := 1) IS
166 PACKAGE PACK1
IS NEW ARRAY_COMP_CHK
(REC_DEF
,
170 PROCEDURE PROC1
IS NEW REC_COMP_CHK
(REC_DEF
);
172 PROC1
(OBJ_XCP
=> TRUE, TAG
=> "PROC1");
175 SEQUENCE_NUMBER
:= 2;
177 TYPE ARR_DEF
(D3
: INTEGER := IDENT_INT
(1)) IS
182 PACKAGE PACK2
IS NEW ARRAY_COMP_CHK
(ARR_DEF
,
186 PROCEDURE PROC2
IS NEW REC_COMP_CHK
(ARR_DEF
);
188 PROC2
(OBJ_XCP
=> TRUE, TAG
=> "PROC2");
191 SEQUENCE_NUMBER
:= 3;
193 TYPE VAR_REC_DEF1
(D3
: INTEGER := 1) IS
197 C1
: REC
(D3
, IDENT_INT
(11));
199 C2
: INTEGER := IDENT_INT
(5);
203 PACKAGE PACK3
IS NEW ARRAY_COMP_CHK
(VAR_REC_DEF1
,
207 PROCEDURE PROC3
IS NEW REC_COMP_CHK
(VAR_REC_DEF1
);
209 PROC3
(OBJ_XCP
=> TRUE, TAG
=> "PROC3");
212 SEQUENCE_NUMBER
:= 4;
214 TYPE VAR_REC_DEF6
(D3
: INTEGER := IDENT_INT
(-6)) IS
218 C1
: REC
(D3
, IDENT_INT
(11));
220 C2
: INTEGER := IDENT_INT
(5);
224 PACKAGE PACK4
IS NEW ARRAY_COMP_CHK
(VAR_REC_DEF6
,
228 PROCEDURE PROC4
IS NEW REC_COMP_CHK
(VAR_REC_DEF6
);
230 PROC4
(OBJ_XCP
=> FALSE, TAG
=> "PROC4");
233 SEQUENCE_NUMBER
:= 5;
235 TYPE VAR_REC_DEF11
(D3
: INTEGER := 11) IS
239 C1
: REC
(D3
, IDENT_INT
(11));
241 C2
: INTEGER := IDENT_INT
(5);
245 PACKAGE PACK5
IS NEW ARRAY_COMP_CHK
(VAR_REC_DEF11
,
249 PROCEDURE PROC5
IS NEW REC_COMP_CHK
(VAR_REC_DEF11
);
251 PROC5
(OBJ_XCP
=> FALSE, TAG
=> "PROC5");
254 SEQUENCE_NUMBER
:= 6;
256 TYPE VAR_ARR_DEF1
(D3
: INTEGER := IDENT_INT
(1)) IS
260 C1
: MY_ARR
(D3
..IDENT_INT
(11));
262 C2
: INTEGER := IDENT_INT
(5);
266 PACKAGE PACK6
IS NEW ARRAY_COMP_CHK
(VAR_ARR_DEF1
,
270 PROCEDURE PROC6
IS NEW REC_COMP_CHK
(VAR_ARR_DEF1
);
272 PROC6
(OBJ_XCP
=> TRUE, TAG
=> "PROC6");
275 SEQUENCE_NUMBER
:= 7;
277 TYPE VAR_ARR_DEF6
(D3
: INTEGER := -6) IS
281 C1
: MY_ARR
(D3
..IDENT_INT
(11));
283 C2
: INTEGER := IDENT_INT
(5);
287 PACKAGE PACK7
IS NEW ARRAY_COMP_CHK
(VAR_ARR_DEF6
,
291 PROCEDURE PROC7
IS NEW REC_COMP_CHK
(VAR_ARR_DEF6
);
293 PROC7
(OBJ_XCP
=> FALSE, TAG
=> "PROC7");
296 SEQUENCE_NUMBER
:= 8;
298 TYPE VAR_ARR_DEF11
(D3
: INTEGER := IDENT_INT
(11)) IS
302 C1
: MY_ARR
(D3
..IDENT_INT
(11));
304 C2
: INTEGER := IDENT_INT
(5);
308 PACKAGE PACK8
IS NEW ARRAY_COMP_CHK
(VAR_ARR_DEF11
,
312 PROCEDURE PROC8
IS NEW REC_COMP_CHK
(VAR_ARR_DEF11
);
314 PROC8
(OBJ_XCP
=> FALSE, TAG
=> "PROC8");
318 FAILED
("UNEXPECTED EXCEPTION RAISED DURING " &
319 "DECLARATION / INSTANTIATION ELABORATION - " &
320 INTEGER'IMAGE (SEQUENCE_NUMBER
));