annotate gcc/testsuite/ada/acats/tests/c3/c37215f.ada @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 -- C37215F.ADA
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 -- Grant of Unlimited Rights
kono
parents:
diff changeset
4 --
kono
parents:
diff changeset
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
kono
parents:
diff changeset
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
kono
parents:
diff changeset
7 -- unlimited rights in the software and documentation contained herein.
kono
parents:
diff changeset
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
kono
parents:
diff changeset
9 -- this public release, the Government intends to confer upon all
kono
parents:
diff changeset
10 -- recipients unlimited rights equal to those held by the Government.
kono
parents:
diff changeset
11 -- These rights include rights to use, duplicate, release or disclose the
kono
parents:
diff changeset
12 -- released technical data and computer software in whole or in part, in
kono
parents:
diff changeset
13 -- any manner and for any purpose whatsoever, and to have or permit others
kono
parents:
diff changeset
14 -- to do so.
kono
parents:
diff changeset
15 --
kono
parents:
diff changeset
16 -- DISCLAIMER
kono
parents:
diff changeset
17 --
kono
parents:
diff changeset
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
kono
parents:
diff changeset
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
kono
parents:
diff changeset
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
kono
parents:
diff changeset
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
kono
parents:
diff changeset
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
kono
parents:
diff changeset
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
kono
parents:
diff changeset
24 --*
kono
parents:
diff changeset
25 -- CHECK THAT IF
kono
parents:
diff changeset
26 -- A DISCRIMINANT CONSTRAINT
kono
parents:
diff changeset
27 -- DEPENDS ON A DISCRIMINANT, THE DISCRIMINANT VALUE IS CHECKED FOR
kono
parents:
diff changeset
28 -- COMPATIBILITY WHEN THE RECORD TYPE IS:
kono
parents:
diff changeset
29 --
kono
parents:
diff changeset
30 -- CASE D: USED WITHOUT A CONSTRAINT ONLY IN AN ALLOCATOR OR OBJECT
kono
parents:
diff changeset
31 -- DECLARATION AND THE COMPONENT IS PRESENT IN THE DEFAULT SUBTYPE.
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33 -- JBG 10/17/86
kono
parents:
diff changeset
34 -- PWN 05/31/96 Corrected format of call to "TEST"
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 WITH REPORT; USE REPORT;
kono
parents:
diff changeset
37 PROCEDURE C37215F IS
kono
parents:
diff changeset
38
kono
parents:
diff changeset
39 SUBTYPE SM IS INTEGER RANGE 1..10;
kono
parents:
diff changeset
40
kono
parents:
diff changeset
41 TYPE REC (D1, D2 : SM) IS
kono
parents:
diff changeset
42 RECORD NULL; END RECORD;
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 BEGIN
kono
parents:
diff changeset
45 TEST ("C37215F", "CHECK EVALUATION OF DISCRIMINANT EXPRESSIONS " &
kono
parents:
diff changeset
46 "WHEN CONSTRAINT DEPENDS ON DISCRIMINANT, " &
kono
parents:
diff changeset
47 "DISCRIMINANTS HAVE DEFAULTS, AND COMPONENT " &
kono
parents:
diff changeset
48 "SUBTYPE DETERMINES WHETHER CONSTRAINT SHOULD " &
kono
parents:
diff changeset
49 "BE CHECKED");
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 -- CASE D1: COMPONENT IS PRESENT
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 DECLARE
kono
parents:
diff changeset
54 TYPE CONS (D3 : INTEGER := IDENT_INT(0)) IS
kono
parents:
diff changeset
55 RECORD
kono
parents:
diff changeset
56 CASE D3 IS
kono
parents:
diff changeset
57 WHEN -5..10 =>
kono
parents:
diff changeset
58 C1 : REC(D3, 1);
kono
parents:
diff changeset
59 WHEN OTHERS =>
kono
parents:
diff changeset
60 C2 : INTEGER := IDENT_INT(0);
kono
parents:
diff changeset
61 END CASE;
kono
parents:
diff changeset
62 END RECORD;
kono
parents:
diff changeset
63 BEGIN
kono
parents:
diff changeset
64 BEGIN
kono
parents:
diff changeset
65 DECLARE
kono
parents:
diff changeset
66 X : CONS;
kono
parents:
diff changeset
67 BEGIN
kono
parents:
diff changeset
68 FAILED ("DISCRIMINANT CHECK NOT PERFORMED - 1");
kono
parents:
diff changeset
69 IF X /= (1, (1, 1)) THEN
kono
parents:
diff changeset
70 COMMENT ("SHOULDN'T GET HERE");
kono
parents:
diff changeset
71 END IF;
kono
parents:
diff changeset
72 END;
kono
parents:
diff changeset
73 EXCEPTION
kono
parents:
diff changeset
74 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
75 NULL;
kono
parents:
diff changeset
76 WHEN OTHERS =>
kono
parents:
diff changeset
77 FAILED ("UNEXPECTED EXCEPTION - 1");
kono
parents:
diff changeset
78 END;
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 BEGIN
kono
parents:
diff changeset
81 DECLARE
kono
parents:
diff changeset
82 TYPE ACC_CONS IS ACCESS CONS;
kono
parents:
diff changeset
83 X : ACC_CONS;
kono
parents:
diff changeset
84 BEGIN
kono
parents:
diff changeset
85 X := NEW CONS;
kono
parents:
diff changeset
86 FAILED ("DISCRIMINANT CHECK NOT PERFORMED - 2");
kono
parents:
diff changeset
87 IF X.ALL /= (1, (1, 1)) THEN
kono
parents:
diff changeset
88 COMMENT ("IRRELEVANT");
kono
parents:
diff changeset
89 END IF;
kono
parents:
diff changeset
90 EXCEPTION
kono
parents:
diff changeset
91 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
92 NULL;
kono
parents:
diff changeset
93 WHEN OTHERS =>
kono
parents:
diff changeset
94 FAILED ("UNEXPECTED EXCEPTION RAISED - 2A");
kono
parents:
diff changeset
95 END;
kono
parents:
diff changeset
96 EXCEPTION
kono
parents:
diff changeset
97 WHEN OTHERS =>
kono
parents:
diff changeset
98 FAILED ("UNEXPECTED EXCEPTION RAISED - 2B");
kono
parents:
diff changeset
99 END;
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 BEGIN
kono
parents:
diff changeset
102 DECLARE
kono
parents:
diff changeset
103 SUBTYPE SCONS IS CONS;
kono
parents:
diff changeset
104 BEGIN
kono
parents:
diff changeset
105 DECLARE
kono
parents:
diff changeset
106 X : SCONS;
kono
parents:
diff changeset
107 BEGIN
kono
parents:
diff changeset
108 FAILED ("DISCRIMINANT CHECK NOT " &
kono
parents:
diff changeset
109 "PERFORMED - 3");
kono
parents:
diff changeset
110 IF X /= (1, (1, 1)) THEN
kono
parents:
diff changeset
111 COMMENT ("IRRELEVANT");
kono
parents:
diff changeset
112 END IF;
kono
parents:
diff changeset
113 END;
kono
parents:
diff changeset
114 EXCEPTION
kono
parents:
diff changeset
115 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
116 NULL;
kono
parents:
diff changeset
117 WHEN OTHERS =>
kono
parents:
diff changeset
118 FAILED ("UNEXPECTED EXCEPTION RAISED - 3");
kono
parents:
diff changeset
119 END;
kono
parents:
diff changeset
120 EXCEPTION
kono
parents:
diff changeset
121 WHEN OTHERS =>
kono
parents:
diff changeset
122 FAILED ("CONSTRAINT CHECKED TOO SOON - 3");
kono
parents:
diff changeset
123 END;
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 BEGIN
kono
parents:
diff changeset
126 DECLARE
kono
parents:
diff changeset
127 TYPE ARR IS ARRAY (1..5) OF CONS;
kono
parents:
diff changeset
128 BEGIN
kono
parents:
diff changeset
129 DECLARE
kono
parents:
diff changeset
130 X : ARR;
kono
parents:
diff changeset
131 BEGIN
kono
parents:
diff changeset
132 FAILED ("DISCRIMINANT CHECK NOT " &
kono
parents:
diff changeset
133 "PERFORMED - 4");
kono
parents:
diff changeset
134 IF X /= (1..5 => (1, (1, 1))) THEN
kono
parents:
diff changeset
135 COMMENT ("IRRELEVANT");
kono
parents:
diff changeset
136 END IF;
kono
parents:
diff changeset
137 END;
kono
parents:
diff changeset
138 EXCEPTION
kono
parents:
diff changeset
139 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
140 NULL;
kono
parents:
diff changeset
141 WHEN OTHERS =>
kono
parents:
diff changeset
142 FAILED ("UNEXPECTED EXCEPTION RAISED - 4");
kono
parents:
diff changeset
143 END;
kono
parents:
diff changeset
144 EXCEPTION
kono
parents:
diff changeset
145 WHEN OTHERS =>
kono
parents:
diff changeset
146 FAILED ("CONSTRAINT CHECKED TOO SOON - 4");
kono
parents:
diff changeset
147 END;
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 BEGIN
kono
parents:
diff changeset
150 DECLARE
kono
parents:
diff changeset
151 TYPE NREC IS
kono
parents:
diff changeset
152 RECORD
kono
parents:
diff changeset
153 C1 : CONS;
kono
parents:
diff changeset
154 END RECORD;
kono
parents:
diff changeset
155 BEGIN
kono
parents:
diff changeset
156 DECLARE
kono
parents:
diff changeset
157 X : NREC;
kono
parents:
diff changeset
158 BEGIN
kono
parents:
diff changeset
159 FAILED ("DISCRIMINANT CHECK NOT " &
kono
parents:
diff changeset
160 "PERFORMED - 5");
kono
parents:
diff changeset
161 IF X /= (C1 => (1, (1, 1))) THEN
kono
parents:
diff changeset
162 COMMENT ("IRRELEVANT");
kono
parents:
diff changeset
163 END IF;
kono
parents:
diff changeset
164 END;
kono
parents:
diff changeset
165 EXCEPTION
kono
parents:
diff changeset
166 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
167 NULL;
kono
parents:
diff changeset
168 WHEN OTHERS =>
kono
parents:
diff changeset
169 FAILED ("UNEXPECTED EXCEPTION RAISED - 5");
kono
parents:
diff changeset
170 END;
kono
parents:
diff changeset
171 EXCEPTION
kono
parents:
diff changeset
172 WHEN OTHERS =>
kono
parents:
diff changeset
173 FAILED ("CONSTRAINT CHECKED TOO SOON - 5");
kono
parents:
diff changeset
174 END;
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 BEGIN
kono
parents:
diff changeset
177 DECLARE
kono
parents:
diff changeset
178 TYPE DREC IS NEW CONS;
kono
parents:
diff changeset
179 BEGIN
kono
parents:
diff changeset
180 DECLARE
kono
parents:
diff changeset
181 X : DREC;
kono
parents:
diff changeset
182 BEGIN
kono
parents:
diff changeset
183 FAILED ("DISCRIMINANT CHECK NOT " &
kono
parents:
diff changeset
184 "PERFORMED - 6");
kono
parents:
diff changeset
185 IF X /= (1, (1, 1)) THEN
kono
parents:
diff changeset
186 COMMENT ("IRRELEVANT");
kono
parents:
diff changeset
187 END IF;
kono
parents:
diff changeset
188 END;
kono
parents:
diff changeset
189 EXCEPTION
kono
parents:
diff changeset
190 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
191 NULL;
kono
parents:
diff changeset
192 WHEN OTHERS =>
kono
parents:
diff changeset
193 FAILED ("UNEXPECTED EXCEPTION RAISED - 6");
kono
parents:
diff changeset
194 END;
kono
parents:
diff changeset
195 EXCEPTION
kono
parents:
diff changeset
196 WHEN OTHERS =>
kono
parents:
diff changeset
197 FAILED ("CONSTRAINT CHECKED TOO SOON - 6");
kono
parents:
diff changeset
198 END;
kono
parents:
diff changeset
199
kono
parents:
diff changeset
200 END;
kono
parents:
diff changeset
201
kono
parents:
diff changeset
202 -- CASE C2 : COMPONENT IS ABSENT
kono
parents:
diff changeset
203
kono
parents:
diff changeset
204 DECLARE
kono
parents:
diff changeset
205 TYPE CONS (D3 : INTEGER := IDENT_INT(11)) IS
kono
parents:
diff changeset
206 RECORD
kono
parents:
diff changeset
207 CASE D3 IS
kono
parents:
diff changeset
208 WHEN -5..10 =>
kono
parents:
diff changeset
209 C1 : REC(D3, IDENT_INT(1));
kono
parents:
diff changeset
210 WHEN OTHERS =>
kono
parents:
diff changeset
211 C2 : INTEGER := IDENT_INT(5);
kono
parents:
diff changeset
212 END CASE;
kono
parents:
diff changeset
213 END RECORD;
kono
parents:
diff changeset
214 BEGIN
kono
parents:
diff changeset
215 BEGIN
kono
parents:
diff changeset
216 DECLARE
kono
parents:
diff changeset
217 X : CONS;
kono
parents:
diff changeset
218 BEGIN
kono
parents:
diff changeset
219 IF X /= (11, 5) THEN
kono
parents:
diff changeset
220 FAILED ("WRONG VALUE FOR X - 11");
kono
parents:
diff changeset
221 END IF;
kono
parents:
diff changeset
222 END;
kono
parents:
diff changeset
223 EXCEPTION
kono
parents:
diff changeset
224 WHEN OTHERS =>
kono
parents:
diff changeset
225 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 11");
kono
parents:
diff changeset
226 END;
kono
parents:
diff changeset
227
kono
parents:
diff changeset
228 BEGIN
kono
parents:
diff changeset
229 DECLARE
kono
parents:
diff changeset
230 SUBTYPE SCONS IS CONS;
kono
parents:
diff changeset
231 BEGIN
kono
parents:
diff changeset
232 DECLARE
kono
parents:
diff changeset
233 X : SCONS;
kono
parents:
diff changeset
234 BEGIN
kono
parents:
diff changeset
235 IF X /= (11, 5) THEN
kono
parents:
diff changeset
236 FAILED ("X VALUE WRONG - 12");
kono
parents:
diff changeset
237 END IF;
kono
parents:
diff changeset
238 END;
kono
parents:
diff changeset
239 END;
kono
parents:
diff changeset
240 EXCEPTION
kono
parents:
diff changeset
241 WHEN OTHERS =>
kono
parents:
diff changeset
242 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 12");
kono
parents:
diff changeset
243 END;
kono
parents:
diff changeset
244
kono
parents:
diff changeset
245 BEGIN
kono
parents:
diff changeset
246 DECLARE
kono
parents:
diff changeset
247 TYPE ARR IS ARRAY (1..5) OF CONS;
kono
parents:
diff changeset
248 X : ARR;
kono
parents:
diff changeset
249 BEGIN
kono
parents:
diff changeset
250 IF X /= (1..5 => (11, 5)) THEN
kono
parents:
diff changeset
251 FAILED ("X VALUE INCORRECT - 13");
kono
parents:
diff changeset
252 END IF;
kono
parents:
diff changeset
253 END;
kono
parents:
diff changeset
254 EXCEPTION
kono
parents:
diff changeset
255 WHEN OTHERS =>
kono
parents:
diff changeset
256 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 13");
kono
parents:
diff changeset
257 END;
kono
parents:
diff changeset
258
kono
parents:
diff changeset
259 BEGIN
kono
parents:
diff changeset
260 DECLARE
kono
parents:
diff changeset
261 TYPE NREC IS
kono
parents:
diff changeset
262 RECORD
kono
parents:
diff changeset
263 C1 : CONS;
kono
parents:
diff changeset
264 END RECORD;
kono
parents:
diff changeset
265 X : NREC;
kono
parents:
diff changeset
266 BEGIN
kono
parents:
diff changeset
267 IF X /= (C1 => (11, 5)) THEN
kono
parents:
diff changeset
268 FAILED ("X VALUE IS INCORRECT - 14");
kono
parents:
diff changeset
269 END IF;
kono
parents:
diff changeset
270 END;
kono
parents:
diff changeset
271 EXCEPTION
kono
parents:
diff changeset
272 WHEN OTHERS =>
kono
parents:
diff changeset
273 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 14");
kono
parents:
diff changeset
274 END;
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 BEGIN
kono
parents:
diff changeset
277 DECLARE
kono
parents:
diff changeset
278 TYPE NREC IS NEW CONS;
kono
parents:
diff changeset
279 X : NREC;
kono
parents:
diff changeset
280 BEGIN
kono
parents:
diff changeset
281 IF X /= (11, 5) THEN
kono
parents:
diff changeset
282 FAILED ("X VALUE INCORRECT - 15");
kono
parents:
diff changeset
283 END IF;
kono
parents:
diff changeset
284 END;
kono
parents:
diff changeset
285 EXCEPTION
kono
parents:
diff changeset
286 WHEN OTHERS =>
kono
parents:
diff changeset
287 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 15");
kono
parents:
diff changeset
288 END;
kono
parents:
diff changeset
289
kono
parents:
diff changeset
290 BEGIN
kono
parents:
diff changeset
291 DECLARE
kono
parents:
diff changeset
292 TYPE ACC_CONS IS ACCESS CONS;
kono
parents:
diff changeset
293 X : ACC_CONS := NEW CONS;
kono
parents:
diff changeset
294 BEGIN
kono
parents:
diff changeset
295 IF X.ALL /= (11, 5) THEN
kono
parents:
diff changeset
296 FAILED ("X VALUE INCORRECT - 17");
kono
parents:
diff changeset
297 END IF;
kono
parents:
diff changeset
298 END;
kono
parents:
diff changeset
299 EXCEPTION
kono
parents:
diff changeset
300 WHEN OTHERS =>
kono
parents:
diff changeset
301 FAILED ("NONEXISTENT CONSTRAINT CHECKED - 17");
kono
parents:
diff changeset
302 END;
kono
parents:
diff changeset
303 END;
kono
parents:
diff changeset
304
kono
parents:
diff changeset
305
kono
parents:
diff changeset
306 RESULT;
kono
parents:
diff changeset
307
kono
parents:
diff changeset
308 EXCEPTION
kono
parents:
diff changeset
309 WHEN OTHERS =>
kono
parents:
diff changeset
310 FAILED ("CONSTRAINT CHECK DONE TOO EARLY");
kono
parents:
diff changeset
311 RESULT;
kono
parents:
diff changeset
312
kono
parents:
diff changeset
313 END C37215F;