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 MULTIPLE OBJECT DECLARATIONS FOR PRIVATE TYPES, THE
26 -- SUBTYPE INDICATION AND THE INITIALIZATION EXPRESSIONS ARE EVALUATED
27 -- ONCE FOR EACH NAMED OBJECT THAT IS DECLARED AND THE SUBTYPE
28 -- INDICATION IS EVALUATED FIRST. ALSO, CHECK THAT THE EVALUATIONS
29 -- YIELD THE SAME RESULT AS A SEQUENCE OF SINGLE OBJECT DECLARATIONS.
33 WITH REPORT
; USE REPORT
;
37 BUMP
: ARRAY (1 .. 10) OF INTEGER := (OTHERS => 0);
38 G1
: ARRAY (5 .. 6) OF INTEGER;
40 FUNCTION F
(I
: INTEGER) RETURN INTEGER IS
42 BUMP
(I
) := BUMP
(I
) + 1;
46 FUNCTION G
(I
: INTEGER) RETURN INTEGER IS
48 BUMP
(I
) := BUMP
(I
) + 1;
54 TEST
("C32001E", "CHECK THAT IN MULTIPLE OBJECT DECLARATIONS " &
55 "FOR PRIVATE TYPES, THE SUBTYPE INDICATION " &
56 "AND THE INITIALIZATION EXPRESSIONS ARE " &
57 "EVALUATED ONCE FOR EACH NAMED OBJECT THAT " &
58 "IS DECLARED AND THE SUBTYPE INDICATION IS " &
59 "EVALUATED FIRST. ALSO, CHECK THAT THE " &
60 "EVALUATIONS YIELD THE SAME RESULT AS A " &
61 "SEQUENCE OF SINGLE OBJECT DECLARATIONS" );
65 TYPE PBOOL
IS PRIVATE;
67 TYPE PREC
(D
: INTEGER) IS PRIVATE;
71 FUNCTION INIT1
(I
: INTEGER) RETURN PBOOL
;
72 FUNCTION INIT2
(I
: INTEGER) RETURN PINT
;
73 FUNCTION INIT3
(I
: INTEGER) RETURN PREC
;
74 FUNCTION INIT4
(I
: INTEGER) RETURN PARR
;
75 FUNCTION INIT5
(I
: INTEGER) RETURN PACC
;
77 PROCEDURE CHECK1
(B
: PBOOL
; I
: INTEGER; S
: STRING);
78 PROCEDURE CHECK2
(I
: PINT
; J
: INTEGER; S
: STRING);
79 PROCEDURE CHECK3
(R
: PREC
; I
, J
: INTEGER;
81 PROCEDURE CHECK4
(A
: PARR
; I
, J
: INTEGER;
83 PROCEDURE CHECK5
(V
: PACC
; S
: STRING);
84 PROCEDURE CHECK6
(V
: PACC
; S
: STRING);
87 TYPE PBOOL
IS NEW BOOLEAN;
88 TYPE PINT
IS NEW INTEGER;
90 TYPE PREC
(D
: INTEGER) IS
95 TYPE PARR
IS ARRAY (1 .. 2) OF INTEGER;
97 TYPE VECTOR
IS ARRAY (NATURAL RANGE <>) OF INTEGER;
98 TYPE PACC
IS ACCESS VECTOR
;
102 FUNCTION INIT1
(I
: INTEGER) RETURN PBOOL
IS
104 RETURN PBOOL
'VAL (F
(I
) - 1);
107 FUNCTION INIT2
(I
: INTEGER) RETURN PINT
IS
109 RETURN PINT
'VAL (F
(I
));
112 FUNCTION INIT3
(I
: INTEGER) RETURN PREC
IS
113 PR
: PREC
(G1
(I
)) := (G1
(I
), F
(I
));
118 FUNCTION INIT4
(I
: INTEGER) RETURN PARR
IS
119 PA
: PARR
:= (1 .. 2 => F
(I
));
124 FUNCTION INIT5
(I
: INTEGER) RETURN PACC
IS
125 ACCV
: PACC
:= NEW VECTOR
'(1 .. F (I) => F (I));
130 PROCEDURE CHECK1 (B : PBOOL; I : INTEGER; S : STRING) IS
132 IF B /= PBOOL'VAL (I) THEN
133 FAILED ( S & " HAS AN INCORRECT VALUE OF " &
138 PROCEDURE CHECK2 (I : PINT; J : INTEGER; S : STRING) IS
140 IF I /= PINT'VAL (J) THEN
141 FAILED ( S & " HAS AN INCORRECT VALUE OF " &
146 PROCEDURE CHECK3 (R : PREC; I, J : INTEGER;
150 FAILED ( S & ".D HAS AN INCORRECT VALUE OF "
151 & INTEGER'IMAGE (R.D));
155 FAILED ( S & ".VALUE HAS AN INCORRECT " &
157 INTEGER'IMAGE (R.VALUE));
161 PROCEDURE CHECK4 (A : PARR; I, J : INTEGER;
164 IF A /= (I, J) AND A /= (J, I) THEN
165 FAILED ( S & " HAS AN INCORRECT VALUE" );
169 PROCEDURE CHECK5 (V : PACC; S : STRING) IS
172 FAILED ( S & " HAS AN INCORRECT UPPER BOUND "
173 & "OF " & INTEGER'IMAGE (V'LAST));
177 FAILED ( S & " HAS AN INCORRECT COMPONENT " &
182 PROCEDURE CHECK6 (V : PACC; S : STRING) IS
185 FAILED ( S & " HAS AN INCORRECT UPPER BOUND "
186 & "OF " & INTEGER'IMAGE (V'LAST));
189 IF V.ALL = (4, 5, 6) OR V.ALL = (5, 4, 6) OR
190 V.ALL = (4, 6, 5) OR V.ALL = (6, 4, 5) OR
191 V.ALL = (5, 6, 4) OR V.ALL = (6, 5, 4) THEN
194 FAILED ( S & " HAS AN INCORRECT COMPONENT " &
201 PACKAGE PKG2 IS END PKG2;
206 B1, B2 : PBOOL := INIT1 (1);
207 CB1, CB2 : CONSTANT PBOOL := INIT1 (2);
209 I1, I2 : PINT := INIT2 (3);
210 CI1, CI2 : CONSTANT PINT := INIT2 (4);
212 R1, R2 : PREC (G (5)) := INIT3 (5);
213 CR1, CR2 : CONSTANT PREC (G (6)) := INIT3 (6);
215 A1, A2 : PARR := INIT4 (7);
216 CA1, CA2 : CONSTANT PARR := INIT4 (8);
218 V1, V2 : PACC := INIT5 (9);
219 CV1, CV2 : CONSTANT PACC := INIT5 (10);
222 CHECK1 (B1, 0, "B1");
223 CHECK1 (B2, 1, "B2");
224 CHECK1 (CB1, 0, "CB1");
225 CHECK1 (CB2, 1, "CB2");
227 CHECK2 (I1, 1, "I1");
228 CHECK2 (I2, 2, "I2");
229 CHECK2 (CI1, 1, "CI1");
230 CHECK2 (CI2, 2, "CI2");
232 CHECK3 (R1, 1, 2, "R1");
233 CHECK3 (R2, 3, 4, "R2");
234 CHECK3 (CR1, 1, 2, "CR1");
235 CHECK3 (CR2, 3, 4, "CR2");
237 CHECK4 (A1, 1, 2, "A1");
238 CHECK4 (A2, 3, 4, "A2");
239 CHECK4 (CA1, 1, 2, "CA1");
240 CHECK4 (CA2, 3, 4, "CA2");