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 THAT A DECLARATION IN THE DECLARATIVE REGION OF A GENERIC
27 -- SUBPROGRAM HIDES AN OUTER DECLARATION OF A HOMOGRAPH. ALSO CHECK
28 -- THAT THE OUTER DECLARATION IS DIRECTLY VISIBLE IN BOTH
29 -- DECLARATIVE REGIONS BEFORE THE DECLARATION OF THE INNER HOMOGRAPH
30 -- AND THE OUTER DECLARATION IS VISIBLE BY SELECTION AFTER THE INNER
31 -- HOMOGRAPH DECLARATION.
34 -- BCB 08/31/88 CREATED ORIGINAL TEST.
36 WITH REPORT
; USE REPORT
;
43 FUNCTION GEN_FUN
RETURN T
;
45 FUNCTION GEN_FUN
RETURN T
IS
51 TEST
("C83025A", "CHECK THAT A DECLARATION IN THE DECLARATIVE " &
52 "REGION OF A GENERIC SUBPROGRAM HIDES AN OUTER " &
53 "DECLARATION OF A HOMOGRAPH");
56 DECLARE -- SUBPROGRAM DECLARATIVE REGION.
57 A
: INTEGER := IDENT_INT
(2);
61 PROCEDURE INNER
(X
: IN OUT INTEGER);
63 PROCEDURE INNER
(X
: IN OUT INTEGER) IS
65 A
: INTEGER := IDENT_INT
(3);
67 IF A
/= IDENT_INT
(3) THEN
68 FAILED
("INCORRECT VALUE FOR INNER HOMOGRAPH - 1");
71 IF ONE
.A
/= IDENT_INT
(2) THEN
72 FAILED
("INCORRECT VALUE FOR OUTER HOMOGRAPH - 2");
75 IF ONE
.B
/= IDENT_INT
(2) THEN
76 FAILED
("INCORRECT VALUE FOR OUTER VARIABLE - 3");
79 IF C
/= IDENT_INT
(2) THEN
80 FAILED
("INCORRECT VALUE FOR INNER VARIABLE - 4");
83 IF X
/= IDENT_INT
(2) THEN
84 FAILED
("INCORRECT VALUE PASSED IN - 5");
94 PROCEDURE NEW_INNER
IS NEW INNER
;
99 IF A
/= IDENT_INT
(3) THEN
100 FAILED
("INCORRECT VALUE PASSED OUT - 6");
105 DECLARE -- FORMAL PARAMETER OF GENERIC SUBPROGRAM.
106 A
: INTEGER := IDENT_INT
(2);
108 OBJ
: INTEGER := IDENT_INT
(3);
111 PROCEDURE INNER
(X
: IN INTEGER := A
;
114 PROCEDURE INNER
(X
: IN INTEGER := TWO
.A
;
115 A
: IN OUT INTEGER) IS
118 IF A
/= IDENT_INT
(3) THEN
119 FAILED
("INCORRECT VALUE FOR INNER HOMOGRAPH -10");
122 IF TWO
.A
/= IDENT_INT
(2) THEN
123 FAILED
("INCORRECT VALUE FOR OUTER HOMOGRAPH - 11");
126 IF TWO
.B
/= IDENT_INT
(2) THEN
127 FAILED
("INCORRECT VALUE FOR OUTER VARIABLE - 12");
130 IF C
/= IDENT_INT
(3) THEN
131 FAILED
("INCORRECT VALUE FOR INNER VARIABLE - 13");
134 IF X
/= IDENT_INT
(2) THEN
135 FAILED
("INCORRECT VALUE PASSED IN - 14");
145 PROCEDURE NEW_INNER
IS NEW INNER
;
148 NEW_INNER
(A
=> OBJ
);
150 IF OBJ
/= IDENT_INT
(4) THEN
151 FAILED
("INCORRECT VALUE PASSED OUT - 15");
156 DECLARE -- AFTER THE SPECIFICATION OF GENERIC SUBPROGRAM.
158 A
: INTEGER := IDENT_INT
(3);
159 FUNCTION INNER
(X
: INTEGER) RETURN INTEGER;
161 A
: INTEGER := IDENT_INT
(2);
165 FUNCTION INNER
(X
: INTEGER) RETURN INTEGER IS
166 C
: INTEGER := THREE
.A
;
168 IF A
/= IDENT_INT
(3) THEN
169 FAILED
("INCORRECT VALUE FOR INNER HOMOGRAPH - 20");
172 IF THREE
.A
/= IDENT_INT
(2) THEN
173 FAILED
("INCORRECT VALUE FOR OUTER HOMOGRAPH - 21");
176 IF THREE
.B
/= IDENT_INT
(2) THEN
177 FAILED
("INCORRECT VALUE FOR OUTER VARIABLE - 22");
180 IF C
/= IDENT_INT
(2) THEN
181 FAILED
("INCORRECT VALUE FOR INNER VARIABLE - 23");
184 IF X
/= IDENT_INT
(2) THEN
185 FAILED
("INCORRECT VALUE PASSED IN - 24");
195 FUNCTION NEW_INNER
IS NEW INNER
;
198 IF NEW_INNER
(A
) /= IDENT_INT
(3) THEN
199 FAILED
("INCORRECT VALUE PASSED OUT - 25");
205 A
: INTEGER := IDENT_INT
(2);
210 PROCEDURE INNER
(X
: IN OUT INTEGER);
212 PROCEDURE INNER
(X
: IN OUT INTEGER) IS
213 C
: INTEGER := FOUR
.A
;
215 IF A
/= IDENT_INT
(3) THEN
216 FAILED
("INCORRECT VALUE FOR INNER HOMOGRAPH - 30");
219 IF B
/= IDENT_INT
(3) THEN
220 FAILED
("INCORRECT VALUE FOR INNER VARIABLE - 31");
223 IF FOUR
.A
/= IDENT_INT
(2) THEN
224 FAILED
("INCORRECT VALUE FOR OUTER HOMOGRAPH - 32");
227 IF C
/= IDENT_INT
(2) THEN
228 FAILED
("INCORRECT VALUE FOR INNER VARIABLE - 33");
231 IF X
/= IDENT_INT
(2) THEN
232 FAILED
("INCORRECT VALUE PASSED IN - 34");
242 PROCEDURE NEW_INNER
IS NEW INNER
(A
=> IDENT_INT
(3));
247 IF A
/= IDENT_INT
(3) THEN
248 FAILED
("INCORRECT VALUE PASSED OUT - 35");
253 DECLARE -- OVERLOADING OF FUNCTIONS.
258 FUNCTION F
IS NEW GEN_FUN
(INTEGER, OBJ
);
261 PROCEDURE INNER
(X
: IN OUT INTEGER; F
: IN FLOAT);
263 FUNCTION F
IS NEW GEN_FUN
(FLOAT, FLO
);
265 PROCEDURE INNER
(X
: IN OUT INTEGER; F
: IN FLOAT) IS
270 PROCEDURE NEW_INNER
IS NEW INNER
;
275 NEW_INNER
(OBJ
, FLO
);
277 IF OBJ
/= IDENT_INT
(6) THEN
278 FAILED
("INCORRECT VALUE RETURNED FROM FUNCTION - 40");