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 -- WHEN THE TYPE MARK IN A QUALIFIED EXPRESSION DENOTES A
27 -- CONSTRAINED RECORD, PRIVATE, OR LIMITED PRIVATE TYPE, CHECK THAT
28 -- CONSTRAINT_ERROR IS RAISED WHEN THE DISCRIMINANTS OF THE OPERAND
29 -- DO NOT EQUAL THOSE OF THE TYPE MARK.
33 -- DWC 07/24/87 CHANGED CODE TO TEST FOR FIRST DISCRIMINANT
34 -- AND LAST DISCRIMINANT MISMATCH.
36 WITH REPORT
; USE REPORT
;
39 TYPE GENDER
IS (MALE
, FEMALE
, NEUTER
);
41 FUNCTION IDENT
(G
: GENDER
) RETURN GENDER
IS
43 RETURN GENDER
'VAL (IDENT_INT
(GENDER
'POS (G
)));
48 TEST
( "C47008A", "WHEN THE TYPE MARK IN A QUALIFIED " &
49 "EXPRESSION DENOTES A CONSTRAINED RECORD, " &
50 "PRIVATE, OR LIMITED PRIVATE TYPE, CHECK " &
51 "THAT CONSTRAINT_ERROR IS RAISED WHEN THE " &
52 "DISCRIMANTS OF THE OPERAND DO NOT EQUAL " &
53 "THOSE OF THE TYPE MARK" );
57 TYPE PERSON
(SEX
: GENDER
) IS
62 SUBTYPE WOMAN
IS PERSON
(IDENT
(FEMALE
));
63 TOM
: PERSON
(MALE
) := (SEX
=> IDENT
(MALE
));
66 IF WOMAN
'(TOM) = PERSON'(SEX
=> MALE
) THEN
67 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
68 "NOT EQUAL TO THOSE OF SUBTYPE WOMAN - 1");
70 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
71 "NOT EQUAL TO THOSE OF SUBTYPE WOMAN - 2");
74 WHEN CONSTRAINT_ERROR
=>
77 FAILED
( "WRONG EXCEPTION RAISED FOR OPERAND WITH " &
78 "DISC NOT EQUAL TO THOSE OF SUBTYPE WOMAN" );
82 TYPE PAIR
(SEX1
, SEX2
: GENDER
) IS
87 SUBTYPE COUPLE
IS PAIR
(IDENT
(FEMALE
), IDENT
(MALE
));
88 JONESES
: PAIR
(IDENT
(MALE
), IDENT
(FEMALE
));
91 IF COUPLE
'(JONESES) = PAIR'(SEX1
=> MALE
, SEX2
=> FEMALE
)
93 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
94 "NOT EQUAL TO THOSE OF SUBTYPE COUPLE - 1");
96 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
97 "NOT EQUAL TO THOSE OF SUBTYPE COUPLE - 2");
100 WHEN CONSTRAINT_ERROR
=>
103 FAILED
( "WRONG EXCEPTION RAISED FOR OPERAND WITH " &
104 "DISC NOT EQUAL TO THOSE OF SUBTYPE COUPLE" );
110 TYPE PERSON
(SEX
: GENDER
) IS PRIVATE;
111 SUBTYPE MAN
IS PERSON
(IDENT
(MALE
));
113 TESTWRITER
: CONSTANT PERSON
;
116 TYPE PERSON
(SEX
: GENDER
) IS
121 TESTWRITER
: CONSTANT PERSON
:= (SEX
=> FEMALE
);
127 ROSA
: PERSON
(IDENT
(FEMALE
));
130 IF MAN
'(ROSA) = TESTWRITER THEN
131 FAILED ( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
132 "NOT EQUAL TO THOSE OF SUBTYPE MAN - 1" );
134 FAILED ( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
135 "NOT EQUAL TO THOSE OF SUBTYPE MAN - 2" );
138 WHEN CONSTRAINT_ERROR =>
141 FAILED ( "WRONG EXCEPTION RAISED FOR OPERAND WITH " &
142 "DISC NOT EQUAL TO THOSE OF SUBTYPE MAN" );
147 TYPE PAIR (SEX1, SEX2 : GENDER) IS PRIVATE;
148 SUBTYPE FRIENDS IS PAIR (IDENT (FEMALE), IDENT (MALE));
150 ALICE_AND_JERRY : CONSTANT FRIENDS;
153 TYPE PAIR (SEX1, SEX2 : GENDER) IS
158 ALICE_AND_JERRY : CONSTANT FRIENDS :=
159 (IDENT (FEMALE), IDENT (MALE));
165 DICK_AND_JOE : PAIR (IDENT (MALE), IDENT (MALE));
168 IF FRIENDS'(DICK_AND_JOE
) = ALICE_AND_JERRY
THEN
169 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
170 "NOT EQUAL TO THOSE OF SUBTYPE FRIENDS - 1");
172 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH DISC " &
173 "NOT EQUAL TO THOSE OF SUBTYPE FRIENDS - 2");
176 WHEN CONSTRAINT_ERROR
=>
179 FAILED
( "WRONG EXCEPTION RAISED FOR OPERAND WITH " &
180 "DISC NOT EQUAL TO THOSE OF SUBTYPE FRIENDS" );
186 TYPE PERSON
(SEX
: GENDER
) IS LIMITED PRIVATE;
187 SUBTYPE ANDROID
IS PERSON
(IDENT
(NEUTER
));
189 FUNCTION F
RETURN PERSON
;
190 FUNCTION "=" (A
, B
: PERSON
) RETURN BOOLEAN;
192 TYPE PERSON
(SEX
: GENDER
) IS
201 FUNCTION F
RETURN PERSON
IS
203 RETURN PERSON
'(SEX => (IDENT (MALE)));
206 FUNCTION "=" (A, B : PERSON) RETURN BOOLEAN IS
208 RETURN A.SEX = B.SEX;
213 PACKAGE PKG2 IS END PKG2;
219 IF ANDROID'(F
) = F
THEN
220 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH " &
221 "DISC NOT EQUAL TO THOSE OF SUBTYPE " &
224 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH " &
225 "DISC NOT EQUAL TO THOSE OF SUBTYPE " &
229 WHEN CONSTRAINT_ERROR
=>
232 FAILED
( "WRONG EXCEPTION RAISED FOR OPERAND " &
233 "WITH DISC NOT EQUAL TO THOSE OF " &
243 TYPE PAIR
(SEX1
, SEX2
: GENDER
) IS LIMITED PRIVATE;
244 SUBTYPE LOVERS
IS PAIR
(IDENT
(FEMALE
), IDENT
(MALE
));
246 FUNCTION F
RETURN PAIR
;
247 FUNCTION "=" (A
, B
: PAIR
) RETURN BOOLEAN;
249 TYPE PAIR
(SEX1
, SEX2
: GENDER
) IS
257 FUNCTION F
RETURN PAIR
IS
259 RETURN PAIR
'(SEX1 => (IDENT (FEMALE)),
260 SEX2 => (IDENT (FEMALE)));
263 FUNCTION "=" (A, B : PAIR) RETURN BOOLEAN IS
265 RETURN A.SEX1 = B.SEX2;
270 PACKAGE PKG2 IS END PKG2;
276 IF LOVERS'(F
) = F
THEN
277 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH " &
278 "DISC NOT EQUAL TO THOSE OF SUBTYPE " &
281 FAILED
( "NO EXCEPTION RAISED FOR OPERAND WITH " &
282 "DISC NOT EQUAL TO THOSE OF SUBTYPE " &
286 WHEN CONSTRAINT_ERROR
=>
289 FAILED
( "WRONG EXCEPTION RAISED FOR OPERAND " &
290 "WITH DISC NOT EQUAL TO THOSE OF " &