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 ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED)
26 -- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS.
27 -- THIS TEST CHECKS GENERIC INSTANTIATIONS FOR THESE FUNCTIONS.
29 -- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=",
30 -- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-",
31 -- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS.
32 -- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY,
33 -- WITH ONE PARAMETER.
37 WITH REPORT
; USE REPORT
;
42 FUNCTION TWO_PARAMS
(I1
, I2
: ELEMENT
) RETURN CHARACTER;
43 FUNCTION TWO_PARAMS
(I1
, I2
: ELEMENT
) RETURN CHARACTER IS
53 FUNCTION ONE_PARAM
(I1
: ELEMENT
) RETURN CHARACTER;
54 FUNCTION ONE_PARAM
(I1
: ELEMENT
) RETURN CHARACTER IS
56 IF I1
< ELEMENT
'VAL(IDENT_INT
(0)) THEN
63 TEST
("C67002D", "USE OF OPERATOR SYMBOLS IN " &
64 "(OVERLOADED) FUNCTION SPECIFICATIONS");
66 -------------------------------------------------
70 TYPE LP
IS LIMITED PRIVATE;
71 WITH FUNCTION ">" (L
, R
: LP
) RETURN BOOLEAN IS <>;
74 FUNCTION "=" (LPA
, LPB
: LP
) RETURN BOOLEAN;
78 FUNCTION "=" (LPA
, LPB
: LP
) RETURN BOOLEAN IS
86 PACKAGE PACK
IS NEW PKG
(LP
=> INTEGER);
88 FUNCTION "=" (L
, R
: INTEGER) RETURN BOOLEAN
93 IF (LP1
= LP2
) OR NOT (LP2
= LP1
) OR
94 (LP1
= LP1
) OR (LP2
/= LP1
) THEN
95 FAILED
("OVERLOADING OF ""="" OPERATOR DEFECTIVE");
100 -------------------------------------------------
103 FUNCTION "AND" IS NEW TWO_PARAMS
104 (ELEMENT
=> INTEGER);
107 IF (IDENT_INT
(10) AND 1) /= 'G' OR
108 (5 AND 10) /= 'L' THEN
109 FAILED
("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE");
113 -------------------------------------------------
116 FUNCTION "OR" IS NEW TWO_PARAMS
117 (ELEMENT
=> INTEGER);
120 IF (IDENT_INT
(10) OR 1) /= 'G' OR
121 (5 OR 10) /= 'L' THEN
122 FAILED
("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE");
126 -------------------------------------------------
129 FUNCTION "XOR" IS NEW TWO_PARAMS
130 (ELEMENT
=> INTEGER);
133 IF (IDENT_INT
(10) XOR 1) /= 'G' OR
134 (5 XOR 10) /= 'L' THEN
135 FAILED
("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE");
139 -------------------------------------------------
142 FUNCTION "<" IS NEW TWO_PARAMS
143 (ELEMENT
=> INTEGER);
146 IF (IDENT_INT
(10) < 1) /= 'G' OR
148 FAILED
("OVERLOADING OF ""<"" OPERATOR DEFECTIVE");
152 -------------------------------------------------
155 FUNCTION "<=" IS NEW TWO_PARAMS
156 (ELEMENT
=> INTEGER);
159 IF (IDENT_INT
(10) <= 1) /= 'G' OR
160 (5 <= 10) /= 'L' THEN
161 FAILED
("OVERLOADING OF ""<="" OPERATOR DEFECTIVE");
165 -------------------------------------------------
168 FUNCTION ">" IS NEW TWO_PARAMS
169 (ELEMENT
=> INTEGER);
172 IF (IDENT_INT
(10) > 1) /= 'G' OR
174 FAILED
("OVERLOADING OF "">"" OPERATOR DEFECTIVE");
178 -------------------------------------------------
181 FUNCTION ">=" IS NEW TWO_PARAMS
182 (ELEMENT
=> INTEGER);
185 IF (IDENT_INT
(10) >= 1) /= 'G' OR
186 (5 >= 10) /= 'L' THEN
187 FAILED
("OVERLOADING OF "">="" OPERATOR DEFECTIVE");
191 -------------------------------------------------
194 FUNCTION "&" IS NEW TWO_PARAMS
195 (ELEMENT
=> INTEGER);
198 IF (IDENT_INT
(10) & 1) /= 'G' OR
200 FAILED
("OVERLOADING OF ""&"" OPERATOR DEFECTIVE");
204 -------------------------------------------------
207 FUNCTION "*" IS NEW TWO_PARAMS
208 (ELEMENT
=> INTEGER);
211 IF (IDENT_INT
(10) * 1) /= 'G' OR
213 FAILED
("OVERLOADING OF ""*"" OPERATOR DEFECTIVE");
217 -------------------------------------------------
220 FUNCTION "/" IS NEW TWO_PARAMS
221 (ELEMENT
=> INTEGER);
224 IF (IDENT_INT
(10) / 1) /= 'G' OR
226 FAILED
("OVERLOADING OF ""/"" OPERATOR DEFECTIVE");
230 -------------------------------------------------
233 FUNCTION "MOD" IS NEW TWO_PARAMS
234 (ELEMENT
=> INTEGER);
237 IF (IDENT_INT
(10) MOD 1) /= 'G' OR
238 (5 MOD 10) /= 'L' THEN
239 FAILED
("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE");
243 -------------------------------------------------
246 FUNCTION "REM" IS NEW TWO_PARAMS
247 (ELEMENT
=> INTEGER);
250 IF (IDENT_INT
(10) REM 1) /= 'G' OR
251 (5 REM 10) /= 'L' THEN
252 FAILED
("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE");
256 -------------------------------------------------
259 FUNCTION "**" IS NEW TWO_PARAMS
260 (ELEMENT
=> INTEGER);
263 IF (IDENT_INT
(10) ** 1) /= 'G' OR
264 (5 ** 10) /= 'L' THEN
265 FAILED
("OVERLOADING OF ""**"" OPERATOR DEFECTIVE");
269 -------------------------------------------------
272 FUNCTION "+" IS NEW TWO_PARAMS
273 (ELEMENT
=> INTEGER);
276 IF (IDENT_INT
(10) + 1) /= 'G' OR
278 FAILED
("OVERLOADING OF ""+"" OPERATOR DEFECTIVE");
282 -------------------------------------------------
285 FUNCTION "-" IS NEW TWO_PARAMS
286 (ELEMENT
=> INTEGER);
289 IF (IDENT_INT
(10) - 1) /= 'G' OR
291 FAILED
("OVERLOADING OF ""-"" OPERATOR DEFECTIVE");
295 -------------------------------------------------
298 FUNCTION "+" IS NEW ONE_PARAM
299 (ELEMENT
=> INTEGER);
302 IF (+ IDENT_INT
(25) /= 'P') OR
303 (+ (0-25) /= 'N') THEN
304 FAILED
("OVERLOADING OF ""+"" " &
305 "OPERATOR (ONE OPERAND) DEFECTIVE");
309 -------------------------------------------------
312 FUNCTION "-" IS NEW ONE_PARAM
313 (ELEMENT
=> INTEGER);
316 IF (- IDENT_INT
(25) /= 'P') OR
317 (- (0-25) /= 'N') THEN
318 FAILED
("OVERLOADING OF ""-"" " &
319 "OPERATOR (ONE OPERAND) DEFECTIVE");
323 -------------------------------------------------
326 FUNCTION "NOT" IS NEW ONE_PARAM
327 (ELEMENT
=> INTEGER);
330 IF (NOT IDENT_INT
(25) /= 'P') OR
331 (NOT (0-25) /= 'N') THEN
332 FAILED
("OVERLOADING OF ""NOT"" " &
333 "OPERATOR (ONE OPERAND) DEFECTIVE");
337 -------------------------------------------------
340 FUNCTION "ABS" IS NEW ONE_PARAM
341 (ELEMENT
=> INTEGER);
344 IF (ABS IDENT_INT
(25) /= 'P') OR
345 (ABS (0-25) /= 'N') THEN
346 FAILED
("OVERLOADING OF ""ABS"" " &
347 "OPERATOR (ONE OPERAND) DEFECTIVE");
351 -------------------------------------------------