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 CONSTRAINT_ERROR IS RAISED OR NOT, AS APPROPRIATE,
26 -- DURING DISCRETE_RANGE ELABORATIONS/EVALUATIONS IN LOOPS,
27 -- ARRAY_TYPE_DEFINITIONS, ARRAY AGGREGATES, SLICES,
28 -- AND INDEX CONSTRAINTS IN OBJECT AND TYPE DECLARATIONS, WHERE
29 -- AN EXPLICIT (SUB)TYPE IS INCLUDED IN EACH DISCRETE_RANGE.
30 -- MEMBERSHIP OPERATORS ARE CHECKED HERE, ALSO, TO ENSURE THAT
31 -- EXCEPTIONS ARE NOT RAISED FOR NULL RANGES.
32 -- ONLY DYNAMIC CASES ARE CHECKED HERE.
36 -- L.BROWN 7/15/86 1) ADDED ACCESS TYPES.
37 -- 2) DELETED "NULL INDEX RANGE, CONSTRAINT_ERROR
39 -- 3) MADE USE OF DYNAMIC-RESULT FUNCTIONS.
40 -- 4) DELETED ALL REFERENCES TO CASE STATEMENT CHOICES
41 -- AND VARIANT PART CHOICES IN THE ABOVE COMMENT.
42 -- EDS 7/16/98 AVOID OPTIMIZATION
49 TYPE WEEK
IS (SSUN
, SMON
, STUE
, SWED
, STHU
, SFRI
, SSAT
);
50 SUN
: WEEK
:= WEEK
'VAL(IDENT_INT
(0));
51 MON
: WEEK
:= WEEK
'VAL(IDENT_INT
(1));
52 TUE
: WEEK
:= WEEK
'VAL(IDENT_INT
(2));
53 WED
: WEEK
:= WEEK
'VAL(IDENT_INT
(3));
54 THU
: WEEK
:= WEEK
'VAL(IDENT_INT
(4));
55 FRI
: WEEK
:= WEEK
'VAL(IDENT_INT
(5));
56 SAT
: WEEK
:= WEEK
'VAL(IDENT_INT
(6));
57 TYPE WEEK_ARRAY
IS ARRAY (WEEK
RANGE <>) OF WEEK
;
58 SUBTYPE WORK_WEEK
IS WEEK
RANGE MON
.. FRI
;
59 SUBTYPE MID_WEEK
IS WORK_WEEK
RANGE TUE
.. THU
;
61 TYPE INT_10
IS NEW INTEGER RANGE -10 .. 10;
62 TYPE I_10
IS NEW INT_10
;
63 SUBTYPE I_5
IS I_10
RANGE I_10
(IDENT_INT
(-5)) ..
65 TYPE I_5_ARRAY
IS ARRAY (I_5
RANGE <>) OF I_5
;
67 FUNCTION F
(DAY
: WEEK
) RETURN WEEK
IS
73 TEST
("C36104B", "CONSTRAINT_ERROR IS RAISED OR NOT IN DYNAMIC "
74 & "DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS");
76 -- NON-NULL RANGES, CONSTRAINT_ERROR RAISED.
80 TYPE A
IS ARRAY (I_5
RANGE 0 .. 6) OF I_5
;
81 -- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
84 -- DEFINE AN OBJECT OF TYPE A AND USE IT TO AVOID
85 -- OPTIMIZATION OF SUBTYPE
86 A1
: A
:= (A
'RANGE => I_5
(IDENT_INT
(1)));
88 FAILED
("CONSTRAINT_ERROR NOT RAISED 1 " &
89 I_5
'IMAGE(A1
(1)) ); --USE A1
92 --MAKE SURE THAT CONSTRAINT_ERROR FROM ABOVE STATEMENTS
94 WHEN OTHERS => FAILED
("UNHANDLED EXCEPTION RAISED 1");
97 WHEN CONSTRAINT_ERROR
=> NULL;
99 FAILED
("WRONG EXCEPTION RAISED 1");
103 FOR I
IN MID_WEEK
RANGE MON
.. MON
LOOP
110 FAILED
("CONSTRAINT_ERROR NOT RAISED 3");
112 WHEN CONSTRAINT_ERROR
=> NULL;
114 FAILED
("WRONG EXCEPTION RAISED 3");
119 TYPE P
IS ACCESS I_5_ARRAY
(0 .. 6);
120 -- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
124 -- DEFINE AN OBJECT OF TYPE PA AND USE IT TO AVOID
125 -- OPTIMIZATION OF TYPE
126 PA1
: PA
:=NEW I_5_ARRAY
'(0.. I_5(IDENT_INT(6)) =>
129 FAILED ("CONSTRAINT_ERROR NOT RAISED 4 " &
130 I_5'IMAGE(PA1(1))); --USE PA1
133 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 4");
136 WHEN CONSTRAINT_ERROR => NULL;
138 FAILED ("WRONG EXCEPTION RAISED 4");
142 W : WEEK_ARRAY (MID_WEEK);
144 W := (MID_WEEK RANGE MON .. WED => WED);
145 -- CONSTRAINT_ERROR RAISED.
147 FAILED ("CONSTRAINT_ERROR NOT RAISED 7 " &
148 MID_WEEK'IMAGE(W(WED))); --USE W
150 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 7");
153 WHEN CONSTRAINT_ERROR => NULL;
155 FAILED ("WRONG EXCEPTION RAISED 7");
159 W : WEEK_ARRAY (WORK_WEEK);
161 W := (W'RANGE => WED); -- OK.
162 W (MON .. WED) := W (MID_WEEK RANGE MON .. WED); -- EXCEPTION.
164 FAILED ("CONSTRAINT_ERROR NOT RAISED 8 " &
165 MID_WEEK'IMAGE(W(WED))); --USE W
167 WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 8");
170 WHEN CONSTRAINT_ERROR => NULL;
172 FAILED ("WRONG EXCEPTION RAISED 8");
177 W : WEEK_ARRAY (MID_WEEK RANGE MON .. FRI);
178 -- ELABORATION OF ABOVE RAISES CONSTRAINT_ERROR.
180 W(WED) := THU; -- OK.
181 FAILED ("CONSTRAINT_ERROR NOT RAISED 9 " &
182 WEEK'IMAGE(W(WED))); -- USE W
185 WHEN CONSTRAINT_ERROR => NULL;
187 FAILED ("WRONG EXCEPTION RAISED 9");
192 TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE SUN .. WED);
193 -- RAISES CONSTRAINT_ERROR.
198 X(TUE) := THU; -- OK.
199 FAILED ("CONSTRAINT_ERROR NOT RAISED 10 " &
200 WEEK'IMAGE(X(TUE))); -- USE X
204 FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
207 WHEN CONSTRAINT_ERROR => NULL;
209 FAILED ("WRONG EXCEPTION RAISED 10");
214 SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE MON .. THU);
215 -- RAISES CONSTRAINT_ERROR.
220 T(TUE) := THU; -- OK.
221 FAILED ("CONSTRAINT_ERROR NOT RAISED 11 " &
226 FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
229 WHEN CONSTRAINT_ERROR => NULL;
231 FAILED ("WRONG EXCEPTION RAISED 11");
234 -- NULL DISCRETE/INDEX RANGES, EXCEPTION NOT RAISED.
238 TYPE A IS ARRAY (I_5 RANGE I_5(IDENT_INT(-5)) .. -6) OF I_5;
241 IF A1'FIRST /= I_5(IDENT_INT(-5)) THEN
242 FAILED ("'FIRST
OF NULL ARRAY INCORRECT
");
246 WHEN OTHERS => FAILED ("EXCEPTION RAISED
1");
250 FOR I IN MID_WEEK RANGE SAT .. SUN LOOP
257 FOR I IN MID_WEEK RANGE FRI .. WED LOOP
264 FOR I IN MID_WEEK RANGE MON .. SUN LOOP
271 FOR I IN I_5 RANGE 10 .. -10 LOOP
278 FOR I IN I_5 RANGE 10 .. 9 LOOP
285 FOR I IN I_5 RANGE -10 .. -11 LOOP
292 FOR I IN I_5 RANGE -10 .. -20 LOOP
299 FOR I IN I_5 RANGE 6 .. 5 LOOP
307 WHEN OTHERS => FAILED ("EXCEPTION RAISED
3");
312 TYPE P IS ACCESS I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
313 PA1 : P := NEW I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
315 IF PA1'LENGTH /= IDENT_INT(0) THEN
316 FAILED ("'LENGTH OF NULL ARRAY INCORRECT");
321 FAILED ("EXCEPTION RAISED 5");
325 TYPE NARR IS ARRAY(INTEGER RANGE <>) OF INTEGER;
326 SUBTYPE SNARR IS INTEGER RANGE 1 .. 2;
327 W : NARR(SNARR) := (1,2);
329 IF W = (SNARR RANGE IDENT_INT(4) .. 2 => 5) THEN
330 FAILED("EVALUATION OF EXPRESSION IS INCORRECT");
333 WHEN OTHERS => FAILED ("EXCEPTION RAISED 7");
337 W : WEEK_ARRAY (MID_WEEK);
339 W := (W'RANGE => WED); -- OK.
340 W (TUE .. MON) := W (MID_WEEK RANGE MON .. SUN);
342 WHEN OTHERS => FAILED ("EXCEPTION RAISED 8");
347 W : WEEK_ARRAY (MID_WEEK RANGE MON .. SUN);
350 IF EQUAL(W'LENGTH,0) THEN
356 WHEN OTHERS => FAILED ("EXCEPTION RAISED 9");
361 TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
364 IF EQUAL(W'LENGTH,0) THEN
370 WHEN OTHERS => FAILED ("EXCEPTION RAISED 10");
375 SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
378 IF EQUAL(W'LENGTH,0) THEN
384 WHEN OTHERS => FAILED ("EXCEPTION RAISED 12");
387 -- NULL MEMBERSHIP RANGES, EXCEPTION NOT RAISED.
390 IF F(SUN) IN SAT .. SUN
392 OR F(WED) IN THU .. TUE
394 OR F(FRI) IN SAT .. FRI
397 FAILED ("INCORRECT 'IN' EVALUATION 1");
400 IF IDENT_INT(0) IN 10 .. IDENT_INT(-10)
401 OR 0 IN IDENT_INT(10) .. 9
402 OR IDENT_INT(0) IN IDENT_INT(-10) .. -11
403 OR 0 IN -10 .. IDENT_INT(-20)
404 OR IDENT_INT(0) IN 6 .. IDENT_INT(5)
405 OR 0 IN 5 .. IDENT_INT(3)
406 OR IDENT_INT(0) IN 7 .. IDENT_INT(3)
408 FAILED ("INCORRECT 'IN' EVALUATION 2");
411 IF F(WED) NOT IN THU .. TUE
412 AND IDENT_INT(0) NOT IN IDENT_INT(4) .. -4
414 ELSE FAILED ("INCORRECT 'NOT IN' EVALUATION");
417 WHEN OTHERS => FAILED ("EXCEPTION RAISED 52");