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 CONSTRAINTS ON THE RETURN VALUE OF A FUNCTION ARE
26 -- SATISIFIED WHEN THE FUNCTION RETURNS CONTROL TO ITS INVOKER.
28 -- THIS TESTS CHECKS FOR CONSTRAINTS ON CONSTRAINED ACCESS TYPES WITH
29 -- RECORD, ARRAY, PRIVATE AND LIMITED PRIVATE DESIGNATED TYPES.
32 -- RLB 6/29/01 - Repaired test to work in the face of aggressive optimizations.
33 -- The objects must be used, and must be tied somehow to the
41 TYPE PV
(D
: NATURAL) IS PRIVATE;
42 TYPE LP
(D
: NATURAL) IS LIMITED PRIVATE;
44 TYPE PV
(D
: NATURAL) IS RECORD
47 TYPE LP
(D
: NATURAL) IS RECORD
54 TYPE ARR
IS ARRAY (NATURAL RANGE <>) OF NATURAL;
55 TYPE REC
(D
: NATURAL) IS RECORD
59 TYPE ACC_REC
IS ACCESS REC
;
60 TYPE ACC_ARR
IS ACCESS ARR
;
61 TYPE ACC_PV
IS ACCESS PV
;
62 TYPE ACC_LP
IS ACCESS LP
;
64 SUBTYPE ACC_REC1
IS ACC_REC
(D
=> 1);
65 SUBTYPE ACC_REC2
IS ACC_REC
(D
=> 2);
67 SUBTYPE ACC_ARR1
IS ACC_ARR
(1 .. 10);
68 SUBTYPE ACC_ARR2
IS ACC_ARR
(2 .. 5);
70 SUBTYPE ACC_PV1
IS ACC_PV
(D
=> 1);
71 SUBTYPE ACC_PV2
IS ACC_PV
(D
=> 2);
73 SUBTYPE ACC_LP1
IS ACC_LP
(D
=> 1);
74 SUBTYPE ACC_LP2
IS ACC_LP
(D
=> 2);
76 VAR1
: ACC_REC1
:= NEW REC
(1);
77 VAR2
: ACC_REC2
:= NEW REC
(2);
78 VAA1
: ACC_ARR1
:= NEW ARR
(1 .. 10);
79 VAA2
: ACC_ARR2
:= NEW ARR
(2 .. 5);
80 VAP1
: ACC_PV1
:= NEW PV
(1);
81 VAP2
: ACC_PV2
:= NEW PV
(2);
82 VAL1
: ACC_LP1
:= NEW LP
(1);
83 VAL2
: ACC_LP2
:= NEW LP
(2);
85 FUNCTION FREC
( X
: ACC_REC1
) RETURN ACC_REC2
IS
90 FUNCTION FARR
( X
: ACC_ARR1
) RETURN ACC_ARR2
IS
95 FUNCTION FPV
( X
: ACC_PV1
) RETURN ACC_PV2
IS
100 FUNCTION FLP
( X
: ACC_LP1
) RETURN ACC_LP2
IS
106 FUNCTION LF
(X
: LP
) RETURN INTEGER IS
116 TEST
("C58005H", "CHECK ACCESS CONSTRAINTS ON RETURN VALUES " &
121 IF VAR2
.D
/= REPORT
.IDENT_INT
(2) THEN
122 FAILED
("CONSTRAINT_ERROR NOT RAISED - REC 1");
124 FAILED
("CONSTRAINT_ERROR NOT RAISED - REC 2");
127 WHEN CONSTRAINT_ERROR
=> NULL;
129 FAILED
("WRONG EXCEPTION RAISED - REC");
134 IF VAA2
'FIRST /= REPORT
.IDENT_INT
(2) THEN
135 FAILED
("CONSTRAINT_ERROR NOT RAISED - ARR 1");
137 FAILED
("CONSTRAINT_ERROR NOT RAISED - ARR 2");
140 WHEN CONSTRAINT_ERROR
=> NULL;
142 FAILED
("WRONG EXCEPTION RAISED - ARR");
147 IF VAP2
.D
/= REPORT
.IDENT_INT
(2) THEN
148 FAILED
("CONSTRAINT_ERROR NOT RAISED - PV 1");
150 FAILED
("CONSTRAINT_ERROR NOT RAISED - PV 2");
153 WHEN CONSTRAINT_ERROR
=> NULL;
155 FAILED
("WRONG EXCEPTION RAISED - PV");
160 IF VAL2
.D
/= REPORT
.IDENT_INT
(2) THEN
161 FAILED
("CONSTRAINT_ERROR NOT RAISED - LP 1");
163 FAILED
("CONSTRAINT_ERROR NOT RAISED - LP 2");
166 WHEN CONSTRAINT_ERROR
=> NULL;
168 FAILED
("WRONG EXCEPTION RAISED - LP");