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 -- FOR ALLOCATORS OF THE FORM "NEW T'(X)", CHECK THAT CONSTRAINT_ERROR
26 -- IS RAISED IF T IS AN UNCONSTRAINED RECORD OR PRIVATE TYPE, (X) IS AN
27 -- AGGREGATE OR A VALUE OF TYPE T, AND ONE OF THE DISCRIMINANT VALUES IN
29 -- 1) DOES NOT SATISFY THE RANGE CONSTRAINT FOR THE CORRESPONDING
31 -- 2) DOES NOT EQUAL THE DISCRIMINANT VALUE SPECIFIED IN THE
32 -- DECLARATION OF THE ALLOCATOR'S BASE TYPE.
33 -- 3) A DISCRIMINANT VALUE IS COMPATIBLE WITH A DISCRIMINANT'S SUBTYPE
34 -- BUT DOES NOT PROVIDE A COMPATIBLE INDEX OR DISCRIMINANT
35 -- CONSTRAINT FOR A SUBCOMPONENT DEPENDENT ON THE DISCRIMINANT.
51 TEST
( "C48009B" , "FOR ALLOCATORS OF THE FORM 'NEW T '(X)', " &
52 "CHECK THAT CONSTRAINT_ERROR IS RAISED WHEN " &
53 "APPROPRIATE - UNCONSTRAINED RECORD AND " &
58 SUBTYPE I1_7
IS INTEGER RANGE IDENT_INT
(1)..IDENT_INT
(7);
59 SUBTYPE I1_10
IS INTEGER RANGE IDENT_INT
(1)..IDENT_INT
(10);
60 SUBTYPE I2_9
IS INTEGER RANGE IDENT_INT
(2)..IDENT_INT
(9);
62 TYPE REC
(A
: I2_9
) IS
67 TYPE ARR
IS ARRAY (I2_9
RANGE <>) OF INTEGER;
69 TYPE T_REC
(C
: I1_10
) IS
74 TYPE T_ARR
(C
: I1_10
) IS
80 TYPE T_REC_REC
(A
: I1_10
) IS
85 TYPE T_REC_ARR
(A
: I1_10
) IS
90 TYPE TB
( A
: I1_7
) IS
95 TYPE A_T_REC_REC
IS ACCESS T_REC_REC
;
96 TYPE A_T_REC_ARR
IS ACCESS T_REC_ARR
;
97 TYPE ATB
IS ACCESS TB
;
98 TYPE ACTB
IS ACCESS TB
(3);
100 VA_T_REC_REC
: A_T_REC_REC
;
101 VA_T_REC_ARR
: A_T_REC_ARR
;
106 TYPE PRIV
( A
: I1_10
) IS PRIVATE;
107 CONS_PRIV
: CONSTANT PRIV
;
109 TYPE PRIV
( A
: I1_10
) IS
113 CONS_PRIV
: CONSTANT PRIV
:= (2, 3);
118 TYPE A_PRIV
IS ACCESS P
.PRIV
;
119 TYPE A_CPRIV
IS ACCESS P
.PRIV
(3);
124 FUNCTION ALLOC1
(X
: P
.PRIV
) RETURN A_CPRIV
IS
127 RETURN NEW P
.PRIV
'(X);
132 FUNCTION ALLOC2(X : TB) RETURN ACTB IS
144 VB
:= NEW TB
'(A => IDENT_INT(0), R => 1);
145 FAILED ("NO EXCEPTION RAISED - CASE 1A");
147 WHEN CONSTRAINT_ERROR => NULL;
149 FAILED( "WRONG EXCEPTION RAISED - CASE 1A" );
153 VB := NEW TB'(A
=> 8, R
=> 1);
154 FAILED
("NO EXCEPTION RAISED - CASE 1B");
156 WHEN CONSTRAINT_ERROR
=> NULL;
158 FAILED
( "WRONG EXCEPTION RAISED - CASE 1B");
162 VCB
:= NEW TB
'(2, 3);
163 FAILED ("NO EXCEPTION RAISED - CASE 2A");
165 WHEN CONSTRAINT_ERROR => NULL;
167 FAILED ("WRONG EXCEPTION RAISED - CASE 2A");
171 IF ALLOC2((IDENT_INT(4), 3)) = NULL THEN
172 FAILED ("IMPOSSIBLE - CASE 2B");
174 FAILED ("NO EXCEPTION RAISED - CASE 2B");
176 WHEN CONSTRAINT_ERROR => NULL;
178 FAILED ("WRONG EXCEPTION RAISED - CASE 2B");
183 IF ALLOC1(CONS_PRIV) = NULL THEN
184 FAILED ("IMPOSSIBLE - CASE 2C");
186 FAILED ("NO EXCEPTION RAISED - CASE 2C");
190 WHEN CONSTRAINT_ERROR => NULL;
192 FAILED ("WRONG EXCEPTION RAISED - CASE 2C");
198 VA_T_REC_REC := NEW T_REC_REC'(1, (1, (A
=> 1)));
199 FAILED
("NO EXCEPTION RAISED - CASE 3A");
203 WHEN CONSTRAINT_ERROR
=> NULL;
205 FAILED
("WRONG EXCEPTION RAISED - CASE 3A");
211 VA_T_REC_REC
:= NEW T_REC_REC
'(10,
213 FAILED ("NO EXCEPTION RAISED - CASE 3B");
217 WHEN CONSTRAINT_ERROR => NULL;
219 FAILED ("WRONG EXCEPTION RAISED - CASE 3B");
225 VA_T_REC_ARR := NEW T_REC_ARR'(1, (1, (OTHERS => 1),
227 FAILED
("NO EXCEPTION RAISED - CASE 3C");
231 WHEN CONSTRAINT_ERROR
=> NULL;
233 FAILED
("WRONG EXCEPTION RAISED - CASE 3C");
239 VA_T_REC_ARR
:= NEW T_REC_ARR
'(10, (10, (OTHERS => 1),
241 FAILED ("NO EXCEPTION RAISED - CASE 3D");
245 WHEN CONSTRAINT_ERROR => NULL;
247 FAILED ("WRONG EXCEPTION RAISED - CASE 3D");