Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / ada / acats / tests / c4 / c48009b.ada
blobd74d90249226bb2e60b8c04cbc60264f4bdc64a3
1 -- C48009B.ADA
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.
16 -- DISCLAIMER
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 -- 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
28 -- X:
29 -- 1) DOES NOT SATISFY THE RANGE CONSTRAINT FOR THE CORRESPONDING
30 -- DISCRIMINANT OF T.
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.
37 -- RM 01/08/80
38 -- NL 10/13/81
39 -- SPS 10/26/82
40 -- JBG 03/02/83
41 -- EG 07/05/84
43 WITH REPORT;
45 PROCEDURE C48009B IS
47 USE REPORT;
49 BEGIN
51 TEST( "C48009B" , "FOR ALLOCATORS OF THE FORM 'NEW T '(X)', " &
52 "CHECK THAT CONSTRAINT_ERROR IS RAISED WHEN " &
53 "APPROPRIATE - UNCONSTRAINED RECORD AND " &
54 "PRIVATE TYPES");
56 DECLARE
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
63 RECORD
64 NULL;
65 END RECORD;
67 TYPE ARR IS ARRAY (I2_9 RANGE <>) OF INTEGER;
69 TYPE T_REC (C : I1_10) IS
70 RECORD
71 D : REC(C);
72 END RECORD;
74 TYPE T_ARR (C : I1_10) IS
75 RECORD
76 D : ARR(2..C);
77 E : ARR(C..9);
78 END RECORD;
80 TYPE T_REC_REC (A : I1_10) IS
81 RECORD
82 B : T_REC(A);
83 END RECORD;
85 TYPE T_REC_ARR (A : I1_10) IS
86 RECORD
87 B : T_ARR(A);
88 END RECORD;
90 TYPE TB ( A : I1_7 ) IS
91 RECORD
92 R : INTEGER;
93 END RECORD;
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;
102 VB : ATB;
103 VCB : ACTB;
105 PACKAGE P IS
106 TYPE PRIV( A : I1_10 ) IS PRIVATE;
107 CONS_PRIV : CONSTANT PRIV;
108 PRIVATE
109 TYPE PRIV( A : I1_10 ) IS
110 RECORD
111 R : INTEGER;
112 END RECORD;
113 CONS_PRIV : CONSTANT PRIV := (2, 3);
114 END P;
116 USE P;
118 TYPE A_PRIV IS ACCESS P.PRIV;
119 TYPE A_CPRIV IS ACCESS P.PRIV (3);
121 VP : A_PRIV;
122 VCP : A_CPRIV;
124 FUNCTION ALLOC1(X : P.PRIV) RETURN A_CPRIV IS
125 BEGIN
126 IF EQUAL(1, 1) THEN
127 RETURN NEW P.PRIV'(X);
128 ELSE
129 RETURN NULL;
130 END IF;
131 END ALLOC1;
132 FUNCTION ALLOC2(X : TB) RETURN ACTB IS
133 BEGIN
134 IF EQUAL(1, 1) THEN
135 RETURN NEW TB'(X);
136 ELSE
137 RETURN NULL;
138 END IF;
139 END ALLOC2;
141 BEGIN
143 BEGIN -- B1
144 VB := NEW TB'(A => IDENT_INT(0), R => 1);
145 FAILED ("NO EXCEPTION RAISED - CASE 1A");
146 EXCEPTION
147 WHEN CONSTRAINT_ERROR => NULL;
148 WHEN OTHERS =>
149 FAILED( "WRONG EXCEPTION RAISED - CASE 1A" );
150 END;
152 BEGIN
153 VB := NEW TB'(A => 8, R => 1);
154 FAILED ("NO EXCEPTION RAISED - CASE 1B");
155 EXCEPTION
156 WHEN CONSTRAINT_ERROR => NULL;
157 WHEN OTHERS =>
158 FAILED( "WRONG EXCEPTION RAISED - CASE 1B");
159 END; -- B1
161 BEGIN -- B2
162 VCB := NEW TB'(2, 3);
163 FAILED ("NO EXCEPTION RAISED - CASE 2A");
164 EXCEPTION
165 WHEN CONSTRAINT_ERROR => NULL;
166 WHEN OTHERS =>
167 FAILED ("WRONG EXCEPTION RAISED - CASE 2A");
168 END;
170 BEGIN
171 IF ALLOC2((IDENT_INT(4), 3)) = NULL THEN
172 FAILED ("IMPOSSIBLE - CASE 2B");
173 END IF;
174 FAILED ("NO EXCEPTION RAISED - CASE 2B");
175 EXCEPTION
176 WHEN CONSTRAINT_ERROR => NULL;
177 WHEN OTHERS =>
178 FAILED ("WRONG EXCEPTION RAISED - CASE 2B");
179 END;
181 BEGIN
183 IF ALLOC1(CONS_PRIV) = NULL THEN
184 FAILED ("IMPOSSIBLE - CASE 2C");
185 END IF;
186 FAILED ("NO EXCEPTION RAISED - CASE 2C");
188 EXCEPTION
190 WHEN CONSTRAINT_ERROR => NULL;
191 WHEN OTHERS =>
192 FAILED ("WRONG EXCEPTION RAISED - CASE 2C");
194 END; -- B2
196 BEGIN -- B3
198 VA_T_REC_REC := NEW T_REC_REC'(1, (1, (A => 1)));
199 FAILED ("NO EXCEPTION RAISED - CASE 3A");
201 EXCEPTION
203 WHEN CONSTRAINT_ERROR => NULL;
204 WHEN OTHERS =>
205 FAILED ("WRONG EXCEPTION RAISED - CASE 3A");
207 END;
209 BEGIN
211 VA_T_REC_REC := NEW T_REC_REC'(10,
212 (10, (A => 10)));
213 FAILED ("NO EXCEPTION RAISED - CASE 3B");
215 EXCEPTION
217 WHEN CONSTRAINT_ERROR => NULL;
218 WHEN OTHERS =>
219 FAILED ("WRONG EXCEPTION RAISED - CASE 3B");
221 END;
223 BEGIN
225 VA_T_REC_ARR := NEW T_REC_ARR'(1, (1, (OTHERS => 1),
226 (OTHERS => 2)));
227 FAILED ("NO EXCEPTION RAISED - CASE 3C");
229 EXCEPTION
231 WHEN CONSTRAINT_ERROR => NULL;
232 WHEN OTHERS =>
233 FAILED ("WRONG EXCEPTION RAISED - CASE 3C");
235 END;
237 BEGIN
239 VA_T_REC_ARR := NEW T_REC_ARR'(10, (10, (OTHERS => 1),
240 (OTHERS => 2)));
241 FAILED ("NO EXCEPTION RAISED - CASE 3D");
243 EXCEPTION
245 WHEN CONSTRAINT_ERROR => NULL;
246 WHEN OTHERS =>
247 FAILED ("WRONG EXCEPTION RAISED - CASE 3D");
249 END;
251 END;
253 RESULT;
255 END C48009B;