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.
25 -- CHECK THAT IN AND NOT IN ARE EVALUATED CORRECTLY FOR :
26 -- D) ACCESS TO RECORD, PRIVATE, AND LIMITED PRIVATE TYPES WITH
27 -- DISCRIMINANTS (WITH AND WITHOUT DEFAULT VALUES), WHERE THE
28 -- TYPE MARK DENOTES A CONSTRAINED AND UNCONSTRAINED TYPE;
29 -- E) ACCESS TO TASK TYPES.
33 WITH REPORT
; USE REPORT
;
36 SUBTYPE INT
IS INTEGER RANGE 1 .. 5;
39 TYPE PRI_REC1
(D
: INT
) IS PRIVATE;
40 TYPE PRI_REC2
(D
: INT
:= 2) IS PRIVATE;
41 FUNCTION INIT_PREC1
(A
: INT
; B
: STRING) RETURN PRI_REC1
;
42 FUNCTION INIT_PREC2
(A
: INT
; B
: STRING) RETURN PRI_REC2
;
43 TYPE LIM_REC1
(D
: INT
) IS LIMITED PRIVATE;
44 TYPE ACC_LIM1
IS ACCESS LIM_REC1
;
45 SUBTYPE ACC_SUB_LIM1
IS ACC_LIM1
(2);
46 PROCEDURE ASSIGN_LIM1
(A
: ACC_LIM1
; B
: INT
; C
: STRING);
47 TYPE LIM_REC2
(D
: INT
:= 2) IS LIMITED PRIVATE;
48 TYPE ACC_LIM2
IS ACCESS LIM_REC2
;
49 SUBTYPE ACC_SUB_LIM2
IS ACC_LIM2
(2);
50 PROCEDURE ASSIGN_LIM2
(A
: ACC_LIM2
; B
: INT
; C
: STRING);
52 TYPE PRI_REC1
(D
: INT
) IS
54 STR
: STRING (1 .. D
);
56 TYPE PRI_REC2
(D
: INT
:= 2) IS
58 STR
: STRING (1 .. D
);
60 TYPE LIM_REC1
(D
: INT
) IS
62 STR
: STRING (1 .. D
);
64 TYPE LIM_REC2
(D
: INT
:= 2) IS
66 STR
: STRING (1 .. D
);
72 TYPE DIS_REC1
(D
: INT
) IS
74 STR
: STRING (1 .. D
);
76 TYPE DIS_REC2
(D
: INT
:= 5) IS
78 STR
: STRING (D
.. 8);
81 TYPE ACC1_REC1
IS ACCESS DIS_REC1
;
82 SUBTYPE ACC2_REC1
IS ACC1_REC1
(2);
83 TYPE ACC1_REC2
IS ACCESS DIS_REC2
;
84 SUBTYPE ACC2_REC2
IS ACC1_REC2
(2);
89 TYPE ACC_PREC1
IS ACCESS PRI_REC1
;
90 SUBTYPE ACC_SREC1
IS ACC_PREC1
(2);
93 TYPE ACC_PREC2
IS ACCESS PRI_REC2
;
94 SUBTYPE ACC_SREC2
IS ACC_PREC2
(2);
100 REC12
: ACC_SUB_LIM2
;
103 ENTRY E
(X
: INTEGER);
108 ACCEPT E
(X
: INTEGER) DO
109 IF X
/= IDENT_INT
(1) THEN
110 FAILED
("INCORRECT VALUE PASSED TO TASK");
116 FUNCTION INIT_PREC1
(A
: INT
; B
: STRING) RETURN PRI_REC1
IS
123 FUNCTION INIT_PREC2
(A
: INT
; B
: STRING) RETURN PRI_REC2
IS
130 PROCEDURE ASSIGN_LIM1
(A
: ACC_LIM1
; B
: INT
; C
: STRING) IS
135 PROCEDURE ASSIGN_LIM2
(A
: ACC_LIM2
; B
: INT
; C
: STRING) IS
143 TEST
("C45282B", "CHECK THAT IN AND NOT IN ARE EVALUATED FOR " &
144 "ACCESS TYPES TO RECORD TYPES, PRIVATE TYPES, " &
145 "LIMITED PRIVATE TYPES WITH DISCRIMINANTS, AND " &
149 ------------------------------------------------------------------------
150 IF REC1
NOT IN ACC1_REC1
THEN
151 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 1");
153 IF REC1
IN ACC2_REC1
THEN
156 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 2");
158 IF REC2
NOT IN ACC1_REC1
THEN
159 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 3");
161 REC1
:= NEW DIS_REC1
'(5, "12345");
162 IF REC1 IN ACC1_REC1 THEN
165 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 4");
167 IF REC1 IN ACC2_REC1 THEN
168 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 5");
170 REC2 := NEW DIS_REC1'(2, "HI");
171 IF REC2
IN ACC1_REC1
THEN
174 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 6");
177 ------------------------------------------------------------------------
179 IF REC3
IN ACC1_REC2
THEN
182 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 7");
184 IF REC3
NOT IN ACC2_REC2
THEN
185 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 8");
187 IF REC4
IN ACC1_REC2
THEN
190 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 9");
192 REC3
:= NEW DIS_REC2
'(5, "5678");
193 IF REC3 IN ACC1_REC2 THEN
196 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 10");
198 IF REC3 IN ACC2_REC2 THEN
199 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 11");
201 REC4 := NEW DIS_REC2'(2, "2345678");
202 IF REC4
IN ACC1_REC2
THEN
205 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 12");
207 IF REC4
NOT IN ACC2_REC2
THEN
208 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 13");
211 ------------------------------------------------------------------------
213 IF REC5
NOT IN ACC_PREC1
THEN
214 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 14");
216 IF REC5
NOT IN ACC_SREC1
THEN
217 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 15");
219 IF REC6
NOT IN ACC_PREC1
THEN
220 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 16");
222 REC5
:= NEW PRI_REC1
'(INIT_PREC1 (5, "12345"));
223 IF REC5 IN ACC_PREC1 THEN
226 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 17");
228 IF REC5 IN ACC_SREC1 THEN
229 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 18");
231 REC6 := NEW PRI_REC1'(INIT_PREC1
(2, "HI"));
232 IF REC6
IN ACC_PREC1
THEN
235 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 19");
238 ------------------------------------------------------------------------
240 IF REC7
NOT IN ACC_PREC2
THEN
241 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 20");
243 IF REC7
NOT IN ACC_SREC2
THEN
244 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 21");
246 IF REC8
NOT IN ACC_PREC2
THEN
247 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 22");
249 REC7
:= NEW PRI_REC2
'(INIT_PREC2 (5, "12345"));
250 IF REC7 IN ACC_PREC2 THEN
253 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 23");
255 IF REC7 IN ACC_SREC2 THEN
256 FAILED ("INCORRECT RESULTS FOR ACCESS TYPES - 24");
258 REC8 := NEW PRI_REC2'(INIT_PREC2
(2, "HI"));
259 IF REC8
IN ACC_PREC2
THEN
262 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 25");
265 ------------------------------------------------------------------------
267 IF REC9
NOT IN ACC_LIM1
THEN
268 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 26");
270 IF REC9
NOT IN ACC_SUB_LIM1
THEN
271 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 27");
273 IF REC10
NOT IN ACC_LIM1
THEN
274 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 28");
276 REC9
:= NEW LIM_REC1
(5);
277 ASSIGN_LIM1
(REC9
, 5, "12345");
278 IF REC9
IN ACC_LIM1
THEN
281 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 29");
283 IF REC9
IN ACC_SUB_LIM1
THEN
284 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 30");
286 REC10
:= NEW LIM_REC1
(2);
287 ASSIGN_LIM1
(REC10
, 2, "12");
288 IF REC10
IN ACC_LIM1
THEN
291 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 31");
294 ------------------------------------------------------------------------
296 IF REC11
NOT IN ACC_LIM2
THEN
297 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 32");
299 IF REC11
NOT IN ACC_SUB_LIM2
THEN
300 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 33");
302 IF REC12
NOT IN ACC_LIM2
THEN
303 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 34");
305 REC11
:= NEW LIM_REC2
;
306 IF REC11
NOT IN ACC_SUB_LIM2
THEN
307 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 35");
309 ASSIGN_LIM2
(REC11
, 2, "12");
310 IF REC11
IN ACC_LIM2
THEN
313 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 36");
315 IF REC11
IN ACC_SUB_LIM2
THEN
318 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 37");
320 REC12
:= NEW LIM_REC2
;
321 ASSIGN_LIM2
(REC12
, 2, "12");
322 IF REC12
IN ACC_LIM2
THEN
325 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 38");
329 ------------------------------------------------------------------------
331 TYPE ACC_TASK
IS ACCESS T
;
334 IF T1
NOT IN ACC_TASK
THEN
335 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 39");
338 IF T1
IN ACC_TASK
THEN
341 FAILED
("INCORRECT RESULTS FOR ACCESS TYPES - 38");