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 EXPRESSIONS IN AN INDEX CONSTRAINT OR DISCRIMINANT
26 -- CONSTRAINT ARE EVALUATED WHEN THE COMPONENT DECLARATION IS
27 -- ELABORATED EVEN IF SOME BOUNDS OR DISCRIMINANTS ARE GIVEN BY
28 -- A DISCRIMINANT OF AN ENCLOSING RECORD TYPE.
32 WITH REPORT
; USE REPORT
;
35 INIT
:INTEGER := IDENT_INT
(5);
37 TYPE R
(D1
, D2
: INTEGER) IS
42 TYPE ACCR
IS ACCESS R
;
44 TYPE ARR
IS ARRAY (INTEGER RANGE <> ) OF INTEGER;
46 TYPE ACCA
IS ACCESS ARR
;
48 FUNCTION RESET
(N
: INTEGER) RETURN INTEGER IS
50 INIT
:= IDENT_INT
(N
);
55 TEST
( "C37010B", "CHECK THAT EXPRESSIONS IN AN INDEX " &
56 "CONSTRAINT OR DISCRIMINANT CONSTRAINT " &
57 "ARE EVALUATED WHEN THE COMPONENT " &
58 "DECLARATION IS ELABORATED EVEN IF SOME " &
59 "BOUNDS OR DISCRIMINANTS ARE GIVEN BY " &
60 "A DISCRIMINANT OF AN ENCLOSING RECORD TYPE" );
64 TYPE REC1
(D
: INTEGER) IS
66 W1
: R
(D1
=> INIT
, D2
=> D
);
69 Z1
: ACCA
(D
.. INIT
);
72 INT1
: INTEGER := RESET
(10);
78 FAILED
( "INCORRECT VALUE FOR R1.W1.D1" );
82 FAILED
( "INCORRECT VALUE FOR R1.W1.D2" );
85 IF R1
.X1
'FIRST /= 5 THEN
86 FAILED
( "INCORRECT VALUE FOR R1.X1'FIRST" );
89 IF R1
.X1
'LAST /= 4 THEN
90 FAILED
( "INCORRECT VALUE FOR R1.X1'LAST" );
94 R1
.Y1
:= NEW R
(4, 5);
97 FAILED
( "INCORRECT VALUE FOR R1.Y1" );
101 R1
.Z1
:= NEW ARR
(4 .. 5);
104 FAILED
( "INCORRECT VALUE FOR R1.Z1" );
111 TYPE REC2
(D
: INTEGER) IS
119 W2
: R
(D1
=> D
, D2
=> INIT
);
120 X2
: ARR
(D
.. INIT
);
122 Z2
: ACCA
(D
.. INIT
);
126 INT2
: INTEGER := RESET
(20);
131 IF R2
.W2
.D1
/= 6 THEN
132 FAILED
( "INCORRECT VALUE FOR R2.W2.D1" );
135 IF R2
.W2
.D2
/= 10 THEN
136 FAILED
( "INCORRECT VALUE FOR R2.W2.D2" );
139 IF R2
.X2
'FIRST /= 6 THEN
140 FAILED
( "INCORRECT VALUE FOR R2.X2'FIRST" );
143 IF R2
.X2
'LAST /= 10 THEN
144 FAILED
( "INCORRECT VALUE FOR R2.X2'LAST" );
148 R2
.Y2
:= NEW R
(10, 6);
151 FAILED
( "INCORRECT VALUE FOR R2.Y2" );
155 R2
.Z2
:= NEW ARR
(6 .. 10);
158 FAILED
( "INCORRECT VALUE FOR R2.Z2" );