1-- C32112B.ADA
2
3--                             Grant of Unlimited Rights
4--
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
14--     to do so.
15--
16--                                    DISCLAIMER
17--
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.
24--*
25-- CHECK THAT CONSTRAINT_ERROR IS RAISED FOR THE DECLARATION OF A NULL
26-- ARRAY OBJECT IF THE INITIAL VALUE IS NOT A NULL ARRAY.
27
28-- RJW 7/20/86
29-- GMT 7/01/87  ADDED CODE TO PREVENT DEAD VARIABLE OPTIMIZATION.
30--              CHANGED THE RANGE VALUES OF A FEW DIMENSIONS.
31
32WITH REPORT; USE REPORT;
33
34PROCEDURE C32112B IS
35
36     TYPE ARR1 IS ARRAY (NATURAL RANGE <>) OF INTEGER;
37     SUBTYPE NARR1 IS ARR1 (IDENT_INT (2) .. IDENT_INT (1));
38
39
40     TYPE ARR2 IS ARRAY (NATURAL RANGE <>, NATURAL RANGE <>)
41          OF INTEGER;
42     SUBTYPE NARR2 IS ARR2 (IDENT_INT (1) .. IDENT_INT (2),
43                            IDENT_INT (1) .. IDENT_INT (0));
44
45BEGIN
46     TEST ("C32112B", "CHECK THAT CONSTRAINT_ERROR IS RAISED FOR " &
47                      "THE DECLARATION OF A NULL ARRAY OBJECT IF " &
48                      "THE INITIAL VALUE IS NOT A NULL ARRAY");
49
50     BEGIN
51          DECLARE
52               A   : ARR1 (IDENT_INT(1) .. IDENT_INT(2));
53               N1A : NARR1 := (A'RANGE => 0);
54          BEGIN
55               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
56                       "OF VARIABLE 'N1A'");
57               A(1) := IDENT_INT(N1A(1));
58          END;
59     EXCEPTION
60          WHEN CONSTRAINT_ERROR =>
61               NULL;
62          WHEN OTHERS =>
63               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
64                       "OF VARIABLE 'N1A'");
65     END;
66
67     BEGIN
68          DECLARE
69               A   : ARR1 (IDENT_INT (1) .. IDENT_INT (2));
70               N1B : CONSTANT NARR1 := (A'RANGE => 0);
71          BEGIN
72               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
73                       "OF CONSTANT 'N1B'");
74               A(1) := IDENT_INT(N1B(1));
75          END;
76     EXCEPTION
77          WHEN CONSTRAINT_ERROR =>
78               NULL;
79          WHEN OTHERS =>
80               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
81                       "OF CONSTANT 'N1B'");
82     END;
83
84     BEGIN
85          DECLARE
86               A   : ARR1 (IDENT_INT (1) .. IDENT_INT (1));
87               N1C : CONSTANT NARR1 := (A'RANGE => 0);
88          BEGIN
89               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
90                       "OF CONSTANT 'N1C'");
91               A(1) := IDENT_INT(N1C(1));
92          END;
93     EXCEPTION
94          WHEN CONSTRAINT_ERROR =>
95               NULL;
96          WHEN OTHERS =>
97               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
98                       "OF CONSTANT 'N1C'");
99     END;
100
101     BEGIN
102          DECLARE
103               A   : ARR1 (IDENT_INT (1) .. IDENT_INT (1));
104               N1D : NARR1 := (A'RANGE => 0);
105          BEGIN
106               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
107                       "OF VARIABLE 'N1D'");
108               A(1) := IDENT_INT(N1D(1));
109          END;
110     EXCEPTION
111          WHEN CONSTRAINT_ERROR =>
112               NULL;
113          WHEN OTHERS =>
114               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
115                       "OF VARIABLE 'N1D'");
116     END;
117
118     BEGIN
119          DECLARE
120               A   : ARR1 (IDENT_INT (0) .. IDENT_INT (1));
121               N1E : ARR1 (IDENT_INT (1) .. IDENT_INT (0)) :=
122                          (A'RANGE  => 0);
123          BEGIN
124               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
125                       "OF VARIABLE 'N1E'");
126               A(1) := IDENT_INT(N1E(1));
127          END;
128     EXCEPTION
129          WHEN CONSTRAINT_ERROR =>
130               NULL;
131          WHEN OTHERS =>
132               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
133                       "OF VARIABLE 'N1E'");
134     END;
135
136     BEGIN
137          DECLARE
138               A   : ARR1 (IDENT_INT (0) .. IDENT_INT (1));
139               N1F : CONSTANT ARR1 (IDENT_INT (1) .. IDENT_INT (0)) :=
140                     (A'RANGE => 0);
141          BEGIN
142               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
143                       "OF CONSTANT 'N1F'");
144               A(1) := IDENT_INT(N1F(1));
145          END;
146     EXCEPTION
147          WHEN CONSTRAINT_ERROR =>
148               NULL;
149          WHEN OTHERS =>
150               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
151                       "OF CONSTANT 'N1F'");
152     END;
153
154     BEGIN
155          DECLARE
156               A   : ARR2 (IDENT_INT (1) .. IDENT_INT (2),
157                           IDENT_INT (0) .. IDENT_INT (1));
158               N2A : CONSTANT NARR2 := (A'RANGE => (A'RANGE (2) =>0));
159          BEGIN
160               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
161                       "OF CONSTANT 'N2'");
162               A(1,1) := IDENT_INT(N2A(1,1));
163          END;
164     EXCEPTION
165          WHEN CONSTRAINT_ERROR =>
166               NULL;
167          WHEN OTHERS =>
168               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
169                       "OF CONSTANT 'N2A'");
170     END;
171
172     BEGIN
173          DECLARE
174               A : ARR2 (IDENT_INT (1) .. IDENT_INT (2),
175                         IDENT_INT (0) .. IDENT_INT (1));
176               N2B : NARR2 := (A'RANGE => (A'RANGE (2) =>0));
177          BEGIN
178               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
179                       "OF VARIABLE 'N2B'");
180               A(1,1) := IDENT_INT(N2B(1,1));
181          END;
182     EXCEPTION
183          WHEN CONSTRAINT_ERROR =>
184               NULL;
185          WHEN OTHERS =>
186               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
187                       "OF VARIABLE 'N2B'");
188     END;
189
190     BEGIN
191          DECLARE
192               A : ARR2 (IDENT_INT (1) .. IDENT_INT (3),
193                         IDENT_INT (1) .. IDENT_INT (1));
194               N2C : CONSTANT NARR2 := (A'RANGE => (A'RANGE (2) =>0));
195          BEGIN
196               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
197                       "OF CONSTANT 'N2C'");
198               A(1,1) := IDENT_INT(N2C(1,1));
199          END;
200     EXCEPTION
201          WHEN CONSTRAINT_ERROR =>
202               NULL;
203          WHEN OTHERS =>
204               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
205                       "OF CONSTANT 'N2C'");
206     END;
207
208     BEGIN
209          DECLARE
210               A : ARR2 (IDENT_INT (1) .. IDENT_INT (3),
211                         IDENT_INT (1) .. IDENT_INT (1));
212               N2D : NARR2 := (A'RANGE => (A'RANGE (2) =>0));
213          BEGIN
214               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
215                       "OF VARIABLE 'N2D'");
216               A(1,1) := IDENT_INT(N2D(1,1));
217          END;
218     EXCEPTION
219          WHEN CONSTRAINT_ERROR =>
220               NULL;
221          WHEN OTHERS =>
222               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
223                       "OF VARIABLE 'N2D'");
224     END;
225
226     BEGIN
227          DECLARE
228               A : ARR2 (IDENT_INT (1) .. IDENT_INT (1),
229                         IDENT_INT (1) .. IDENT_INT (1));
230               N2E : CONSTANT ARR2 (IDENT_INT (2) .. IDENT_INT (1),
231                                    IDENT_INT (1) .. IDENT_INT (1)) :=
232                                   (A'RANGE => (A'RANGE (2) =>0));
233          BEGIN
234               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
235                       "OF CONSTANT 'N2E'");
236               A(1,1) := IDENT_INT(N2E(1,1));
237          END;
238     EXCEPTION
239          WHEN CONSTRAINT_ERROR =>
240               NULL;
241          WHEN OTHERS =>
242               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
243                       "OF CONSTANT 'N2E'");
244     END;
245
246     BEGIN
247          DECLARE
248               A   : ARR2 (IDENT_INT (1) .. IDENT_INT (1),
249                           IDENT_INT (1) .. IDENT_INT (1));
250               N2F : ARR2 (IDENT_INT (2) .. IDENT_INT (1),
251                           IDENT_INT (1) .. IDENT_INT (1)) :=
252                           (A'RANGE => (A'RANGE (2) =>0));
253          BEGIN
254               FAILED ("NO EXCEPTION RAISED FOR INITIALIZATION " &
255                       "OF VARIABLE 'N2F'");
256               A(1,1) := IDENT_INT(N2F(1,1));
257          END;
258     EXCEPTION
259          WHEN CONSTRAINT_ERROR =>
260               NULL;
261          WHEN OTHERS =>
262               FAILED ("WRONG EXCEPTION RAISED FOR INITIALIZATION " &
263                       "OF VARIABLE 'N2F'");
264     END;
265
266     RESULT;
267END C32112B;
268