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 A CONSTRAINED ARRAY TYPE AND:
27 -- 1) A NAMED NULL OR NON-NULL BOUND FOR X DOES NOT EQUAL THE
28 -- CORRESPONDING BOUND FOR T;
29 -- 2) A BOUND OF T DOES NOT EQUAL THE CORRESPONDING VALUE SPECIFIED IN
30 -- THE DECLARATION OF THE ALLOCATOR'S BASE TYPE;
31 -- 3) A POSITIONAL AGGREGATE DOES NOT HAVE THE NUMBER OF COMPONENTS
32 -- REQUIRED BY T OR BY THE ALLOCATOR'S BASE TYPE.
39 -- PWN 11/30/94 REMOVED TEST ILLEGAL IN ADA 9X.
40 -- KAS 11/14/95 CHANGED FAILURE AT SLIDING ASSIGNMENT TO COMMENT ON LANGUAGE
41 -- KAS 11/30/95 REINSTRUMENTED CASES TO SELECT LANGUAGE SEMANTICS
42 -- PWN 05/03/96 Enforced Ada 95 sliding rules
43 -- PWN 10/24/96 Adjusted expected results for Ada 95.
44 -- TMB 11/19/96 BACKED OUT CHANGE FOR SLIDING WITH ACCESS TYPES
45 -- MRM 12/16/96 Removed problem code from withdrawn version of test, and
46 -- implemented a dereference-index check to ensure Ada95
48 -- PWB.CTA 03/07/97 Restored checks from 1.11 in 2 cases where sliding does
58 TEST
("C48009E","FOR ALLOCATORS OF THE FORM 'NEW T'(X)', CHECK " &
59 "THAT CONSTRAINT_ERROR IS RAISED WHEN " &
60 "APPROPRIATE - CONSTRAINED ARRAY TYPES");
63 TYPE UA
IS ARRAY(INTEGER RANGE <>) OF INTEGER;
64 TYPE CA3_2
IS ARRAY(3 .. 2) OF INTEGER;
65 TYPE SA1_3
IS ARRAY(1 .. 3) OF INTEGER;
66 TYPE NA1_3
IS ARRAY(1 .. IDENT_INT
(3)) OF INTEGER;
67 SUBTYPE CA2_6
IS UA
(2 .. 6);
68 SUBTYPE CA1_4
IS UA
(1 .. 4);
69 SUBTYPE CA1_6
IS UA
(1 .. 6);
70 SUBTYPE CA4_1
IS UA
(4 .. 1);
71 SUBTYPE CA4_2
IS UA
(4 .. 2);
73 TYPE A_CA3_2
IS ACCESS CA3_2
;
74 TYPE A_SA1_3
IS ACCESS SA1_3
;
75 TYPE A_NA1_3
IS ACCESS NA1_3
;
76 TYPE A_CA1_5
IS ACCESS UA
(1 .. 5);
77 TYPE A_CA4_2
IS ACCESS CA4_2
;
84 FUNCTION ALLOC1
(X
: CA2_6
) RETURN A_CA1_5
IS
92 FUNCTION ALLOC2(X : CA4_1) RETURN A_CA4_2 IS
104 V_A_CA3_2
:= NEW CA3_2
'(IDENT_INT(4) .. IDENT_INT(2)
106 FAILED ("NO EXCEPTION RAISED - CASE 1A");
108 WHEN CONSTRAINT_ERROR =>
111 FAILED ("WRONG EXCEPTION RAISED - CASE 1A");
115 V_A_NA1_3 := NEW NA1_3'(1 .. IDENT_INT
(2) => 4);
116 FAILED
("NO EXCEPTION RAISED - CASE 1B");
118 WHEN CONSTRAINT_ERROR
=>
121 FAILED
("WRONG EXCEPTION RAISED - CASE 1B");
125 -- note that ALLOC1 returns A_CA1_5, so both
126 -- (1) and (5) are valid index references!
127 IF ALLOC1
((2 .. 6 => 2))(5) /= 2 THEN
128 FAILED
("Wrong Value Returned - CASE 2A");
129 ELSIF ALLOC1
((2 .. 6 => 3))(1) /= 3 THEN
130 FAILED
("Unlikely Index Case - CASE 2A");
134 FAILED
("EXCEPTION RAISED - CASE 2A");
138 IF ALLOC2
((4 .. 1 => 3)) = NULL THEN
139 FAILED
("IMPOSSIBLE - CASE 2B");
141 COMMENT
("ADA 95 SLIDING ASSIGNMENT");
143 WHEN CONSTRAINT_ERROR
=>
144 FAILED
("ADA 83 NON-SLIDING ASSIGNMENT");
146 FAILED
("WRONG EXCEPTION RAISED - CASE 2B");
150 V_A_SA1_3
:= NEW SA1_3
'(1, 2);
151 FAILED ("NO EXCEPTION RAISED - CASE 3A");
153 WHEN CONSTRAINT_ERROR =>
156 FAILED ("WRONG EXCEPTION RAISED - CASE 3A");
160 V_A_SA1_3 := NEW SA1_3'(3, 4, 5, 6);
161 FAILED
("NO EXCEPTION RAISED - CASE 3B");
163 WHEN CONSTRAINT_ERROR
=>
166 FAILED
("WRONG EXCEPTION RAISED - CASE 3B");
170 V_A_NA1_3
:= NEW NA1_3
'(1, 2);
171 FAILED ("NO EXCEPTION RAISED - CASE 3C");
173 WHEN CONSTRAINT_ERROR =>
176 FAILED ("WRONG EXCEPTION RAISED - CASE 3C");
179 BEGIN -- SATISFIES T BUT NOT BASE TYPE.
180 V_A_CA1_5 := NEW CA1_4'(1, 2, 3, 4);
181 FAILED
("NO EXCEPTION RAISED - CASE 3D");
183 WHEN CONSTRAINT_ERROR
=>
186 FAILED
("WRONG EXCEPTION RAISED - CASE 3D");
189 BEGIN -- SATISFIES T BUT NOT BASE TYPE.
190 V_A_CA1_5
:= NEW CA1_6
'(1, 2, 3, 4, 5, 6);
191 FAILED ("NO EXCEPTION RAISED - CASE 3E");
193 WHEN CONSTRAINT_ERROR =>
196 FAILED ("WRONG EXCEPTION RAISED - CASE 3E");
199 BEGIN -- SATISFIES BASE TYPE BUT NOT T.
200 V_A_CA1_5 := NEW CA1_4'(1, 2, 3, 4, 5);
201 FAILED
("NO EXCEPTION RAISED - CASE 3F");
203 WHEN CONSTRAINT_ERROR
=>
206 FAILED
("WRONG EXCEPTION RAISED - CASE 3F");
209 BEGIN -- SATISFIES BASE TYPE BUT NOT T.
210 V_A_CA1_5
:= NEW CA1_6
'(1, 2, 3, 4, 5);
211 FAILED ("NO EXCEPTION RAISED - CASE 3G");
213 WHEN CONSTRAINT_ERROR =>
216 FAILED ("WRONG EXCEPTION RAISED - CASE 3G");