annotate gcc/testsuite/ada/acats/tests/c4/c46051a.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 -- C46051A.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 ENUMERATION, RECORD, ACCESS, PRIVATE, AND TASK VALUES CAN
kono
parents:
diff changeset
26 -- BE CONVERTED IF THE OPERAND AND TARGET TYPES ARE RELATED BY
kono
parents:
diff changeset
27 -- DERIVATION.
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 -- R.WILLIAMS 9/8/86
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 WITH REPORT; USE REPORT;
kono
parents:
diff changeset
32 PROCEDURE C46051A IS
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 BEGIN
kono
parents:
diff changeset
35 TEST ( "C46051A", "CHECK THAT ENUMERATION, RECORD, ACCESS, " &
kono
parents:
diff changeset
36 "PRIVATE, AND TASK VALUES CAN BE CONVERTED " &
kono
parents:
diff changeset
37 "IF THE OPERAND AND TARGET TYPES ARE " &
kono
parents:
diff changeset
38 "RELATED BY DERIVATION" );
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 DECLARE
kono
parents:
diff changeset
41 TYPE ENUM IS (A, AB, ABC, ABCD);
kono
parents:
diff changeset
42 E : ENUM := ABC;
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 TYPE ENUM1 IS NEW ENUM;
kono
parents:
diff changeset
45 E1 : ENUM1 := ENUM1'VAL (IDENT_INT (2));
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 TYPE ENUM2 IS NEW ENUM;
kono
parents:
diff changeset
48 E2 : ENUM2 := ABC;
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 TYPE NENUM1 IS NEW ENUM1;
kono
parents:
diff changeset
51 NE : NENUM1 := NENUM1'VAL (IDENT_INT (2));
kono
parents:
diff changeset
52 BEGIN
kono
parents:
diff changeset
53 IF ENUM (E) /= E THEN
kono
parents:
diff changeset
54 FAILED ( "INCORRECT CONVERSION OF 'ENUM (E)'" );
kono
parents:
diff changeset
55 END IF;
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 IF ENUM (E1) /= E THEN
kono
parents:
diff changeset
58 FAILED ( "INCORRECT CONVERSION OF 'ENUM (E1)'" );
kono
parents:
diff changeset
59 END IF;
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 IF ENUM1 (E2) /= E1 THEN
kono
parents:
diff changeset
62 FAILED ( "INCORRECT CONVERSION OF 'ENUM1 (E2)'" );
kono
parents:
diff changeset
63 END IF;
kono
parents:
diff changeset
64
kono
parents:
diff changeset
65 IF ENUM2 (NE) /= E2 THEN
kono
parents:
diff changeset
66 FAILED ( "INCORRECT CONVERSION OF 'ENUM2 (NE)'" );
kono
parents:
diff changeset
67 END IF;
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 IF NENUM1 (E) /= NE THEN
kono
parents:
diff changeset
70 FAILED ( "INCORRECT CONVERSION OF 'NENUM (E)'" );
kono
parents:
diff changeset
71 END IF;
kono
parents:
diff changeset
72 EXCEPTION
kono
parents:
diff changeset
73 WHEN OTHERS =>
kono
parents:
diff changeset
74 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
75 "ENUMERATION TYPES" );
kono
parents:
diff changeset
76 END;
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 DECLARE
kono
parents:
diff changeset
79 TYPE REC IS
kono
parents:
diff changeset
80 RECORD
kono
parents:
diff changeset
81 NULL;
kono
parents:
diff changeset
82 END RECORD;
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 R : REC;
kono
parents:
diff changeset
85
kono
parents:
diff changeset
86 TYPE REC1 IS NEW REC;
kono
parents:
diff changeset
87 R1 : REC1;
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 TYPE REC2 IS NEW REC;
kono
parents:
diff changeset
90 R2 : REC2;
kono
parents:
diff changeset
91
kono
parents:
diff changeset
92 TYPE NREC1 IS NEW REC1;
kono
parents:
diff changeset
93 NR : NREC1;
kono
parents:
diff changeset
94 BEGIN
kono
parents:
diff changeset
95 IF REC (R) /= R THEN
kono
parents:
diff changeset
96 FAILED ( "INCORRECT CONVERSION OF 'REC (R)'" );
kono
parents:
diff changeset
97 END IF;
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 IF REC (R1) /= R THEN
kono
parents:
diff changeset
100 FAILED ( "INCORRECT CONVERSION OF 'REC (R1)'" );
kono
parents:
diff changeset
101 END IF;
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 IF REC1 (R2) /= R1 THEN
kono
parents:
diff changeset
104 FAILED ( "INCORRECT CONVERSION OF 'REC1 (R2)'" );
kono
parents:
diff changeset
105 END IF;
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 IF REC2 (NR) /= R2 THEN
kono
parents:
diff changeset
108 FAILED ( "INCORRECT CONVERSION OF 'REC2 (NR)'" );
kono
parents:
diff changeset
109 END IF;
kono
parents:
diff changeset
110
kono
parents:
diff changeset
111 IF NREC1 (R) /= NR THEN
kono
parents:
diff changeset
112 FAILED ( "INCORRECT CONVERSION OF 'NREC (R)'" );
kono
parents:
diff changeset
113 END IF;
kono
parents:
diff changeset
114 EXCEPTION
kono
parents:
diff changeset
115 WHEN OTHERS =>
kono
parents:
diff changeset
116 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
117 "RECORD TYPES" );
kono
parents:
diff changeset
118 END;
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 DECLARE
kono
parents:
diff changeset
121 TYPE REC (D : INTEGER) IS
kono
parents:
diff changeset
122 RECORD
kono
parents:
diff changeset
123 NULL;
kono
parents:
diff changeset
124 END RECORD;
kono
parents:
diff changeset
125
kono
parents:
diff changeset
126 SUBTYPE CREC IS REC (3);
kono
parents:
diff changeset
127 R : CREC;
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 TYPE CREC1 IS NEW REC (3);
kono
parents:
diff changeset
130 R1 : CREC1;
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 TYPE CREC2 IS NEW REC (3);
kono
parents:
diff changeset
133 R2 : CREC2;
kono
parents:
diff changeset
134
kono
parents:
diff changeset
135 TYPE NCREC1 IS NEW CREC1;
kono
parents:
diff changeset
136 NR : NCREC1;
kono
parents:
diff changeset
137 BEGIN
kono
parents:
diff changeset
138 IF CREC (R) /= R THEN
kono
parents:
diff changeset
139 FAILED ( "INCORRECT CONVERSION OF 'CREC (R)'" );
kono
parents:
diff changeset
140 END IF;
kono
parents:
diff changeset
141
kono
parents:
diff changeset
142 IF CREC (R1) /= R THEN
kono
parents:
diff changeset
143 FAILED ( "INCORRECT CONVERSION OF 'CREC (R1)'" );
kono
parents:
diff changeset
144 END IF;
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 IF CREC1 (R2) /= R1 THEN
kono
parents:
diff changeset
147 FAILED ( "INCORRECT CONVERSION OF 'CREC1 (R2)'" );
kono
parents:
diff changeset
148 END IF;
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 IF CREC2 (NR) /= R2 THEN
kono
parents:
diff changeset
151 FAILED ( "INCORRECT CONVERSION OF 'CREC2 (NR)'" );
kono
parents:
diff changeset
152 END IF;
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 IF NCREC1 (R) /= NR THEN
kono
parents:
diff changeset
155 FAILED ( "INCORRECT CONVERSION OF 'NCREC (R)'" );
kono
parents:
diff changeset
156 END IF;
kono
parents:
diff changeset
157 EXCEPTION
kono
parents:
diff changeset
158 WHEN OTHERS =>
kono
parents:
diff changeset
159 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
160 "RECORD TYPES WITH DISCRIMINANTS" );
kono
parents:
diff changeset
161 END;
kono
parents:
diff changeset
162
kono
parents:
diff changeset
163 DECLARE
kono
parents:
diff changeset
164 TYPE REC IS
kono
parents:
diff changeset
165 RECORD
kono
parents:
diff changeset
166 NULL;
kono
parents:
diff changeset
167 END RECORD;
kono
parents:
diff changeset
168
kono
parents:
diff changeset
169 TYPE ACCREC IS ACCESS REC;
kono
parents:
diff changeset
170 AR : ACCREC;
kono
parents:
diff changeset
171
kono
parents:
diff changeset
172 TYPE ACCREC1 IS NEW ACCREC;
kono
parents:
diff changeset
173 AR1 : ACCREC1;
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 TYPE ACCREC2 IS NEW ACCREC;
kono
parents:
diff changeset
176 AR2 : ACCREC2;
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 TYPE NACCREC1 IS NEW ACCREC1;
kono
parents:
diff changeset
179 NAR : NACCREC1;
kono
parents:
diff changeset
180
kono
parents:
diff changeset
181 FUNCTION F (A : ACCREC) RETURN INTEGER IS
kono
parents:
diff changeset
182 BEGIN
kono
parents:
diff changeset
183 RETURN IDENT_INT (0);
kono
parents:
diff changeset
184 END F;
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 FUNCTION F (A : ACCREC1) RETURN INTEGER IS
kono
parents:
diff changeset
187 BEGIN
kono
parents:
diff changeset
188 RETURN IDENT_INT (1);
kono
parents:
diff changeset
189 END F;
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 FUNCTION F (A : ACCREC2) RETURN INTEGER IS
kono
parents:
diff changeset
192 BEGIN
kono
parents:
diff changeset
193 RETURN IDENT_INT (2);
kono
parents:
diff changeset
194 END F;
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 FUNCTION F (A : NACCREC1) RETURN INTEGER IS
kono
parents:
diff changeset
197 BEGIN
kono
parents:
diff changeset
198 RETURN IDENT_INT (3);
kono
parents:
diff changeset
199 END F;
kono
parents:
diff changeset
200
kono
parents:
diff changeset
201 BEGIN
kono
parents:
diff changeset
202 IF F (ACCREC (AR)) /= 0 THEN
kono
parents:
diff changeset
203 FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR)'" );
kono
parents:
diff changeset
204 END IF;
kono
parents:
diff changeset
205
kono
parents:
diff changeset
206 IF F (ACCREC (AR1)) /= 0 THEN
kono
parents:
diff changeset
207 FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR1)'" );
kono
parents:
diff changeset
208 END IF;
kono
parents:
diff changeset
209
kono
parents:
diff changeset
210 IF F (ACCREC1 (AR2)) /= 1 THEN
kono
parents:
diff changeset
211 FAILED ( "INCORRECT CONVERSION OF 'ACCREC1 (AR2)'" );
kono
parents:
diff changeset
212 END IF;
kono
parents:
diff changeset
213
kono
parents:
diff changeset
214 IF F (ACCREC2 (NAR)) /= 2 THEN
kono
parents:
diff changeset
215 FAILED ( "INCORRECT CONVERSION OF 'ACCREC2 (NAR)'" );
kono
parents:
diff changeset
216 END IF;
kono
parents:
diff changeset
217
kono
parents:
diff changeset
218 IF F (NACCREC1 (AR)) /= 3 THEN
kono
parents:
diff changeset
219 FAILED ( "INCORRECT CONVERSION OF 'NACCREC (AR)'" );
kono
parents:
diff changeset
220 END IF;
kono
parents:
diff changeset
221 EXCEPTION
kono
parents:
diff changeset
222 WHEN OTHERS =>
kono
parents:
diff changeset
223 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
224 "ACCESS TYPES" );
kono
parents:
diff changeset
225 END;
kono
parents:
diff changeset
226
kono
parents:
diff changeset
227 DECLARE
kono
parents:
diff changeset
228 TYPE REC (D : INTEGER) IS
kono
parents:
diff changeset
229 RECORD
kono
parents:
diff changeset
230 NULL;
kono
parents:
diff changeset
231 END RECORD;
kono
parents:
diff changeset
232
kono
parents:
diff changeset
233 TYPE ACCR IS ACCESS REC;
kono
parents:
diff changeset
234
kono
parents:
diff changeset
235 SUBTYPE CACCR IS ACCR (3);
kono
parents:
diff changeset
236 AR : CACCR;
kono
parents:
diff changeset
237
kono
parents:
diff changeset
238 TYPE CACCR1 IS NEW ACCR (3);
kono
parents:
diff changeset
239 AR1 : CACCR1;
kono
parents:
diff changeset
240
kono
parents:
diff changeset
241 TYPE CACCR2 IS NEW ACCR (3);
kono
parents:
diff changeset
242 AR2 : CACCR2;
kono
parents:
diff changeset
243
kono
parents:
diff changeset
244 TYPE NCACCR1 IS NEW CACCR1;
kono
parents:
diff changeset
245 NAR : NCACCR1;
kono
parents:
diff changeset
246
kono
parents:
diff changeset
247 FUNCTION F (A : CACCR) RETURN INTEGER IS
kono
parents:
diff changeset
248 BEGIN
kono
parents:
diff changeset
249 RETURN IDENT_INT (0);
kono
parents:
diff changeset
250 END F;
kono
parents:
diff changeset
251
kono
parents:
diff changeset
252 FUNCTION F (A : CACCR1) RETURN INTEGER IS
kono
parents:
diff changeset
253 BEGIN
kono
parents:
diff changeset
254 RETURN IDENT_INT (1);
kono
parents:
diff changeset
255 END F;
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 FUNCTION F (A : CACCR2) RETURN INTEGER IS
kono
parents:
diff changeset
258 BEGIN
kono
parents:
diff changeset
259 RETURN IDENT_INT (2);
kono
parents:
diff changeset
260 END F;
kono
parents:
diff changeset
261
kono
parents:
diff changeset
262 FUNCTION F (A : NCACCR1) RETURN INTEGER IS
kono
parents:
diff changeset
263 BEGIN
kono
parents:
diff changeset
264 RETURN IDENT_INT (3);
kono
parents:
diff changeset
265 END F;
kono
parents:
diff changeset
266
kono
parents:
diff changeset
267 BEGIN
kono
parents:
diff changeset
268 IF F (CACCR (AR)) /= 0 THEN
kono
parents:
diff changeset
269 FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR)'" );
kono
parents:
diff changeset
270 END IF;
kono
parents:
diff changeset
271
kono
parents:
diff changeset
272 IF F (CACCR (AR1)) /= 0 THEN
kono
parents:
diff changeset
273 FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR1)'" );
kono
parents:
diff changeset
274 END IF;
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 IF F (CACCR1 (AR2)) /= 1 THEN
kono
parents:
diff changeset
277 FAILED ( "INCORRECT CONVERSION OF 'CACCR1 (AR2)'" );
kono
parents:
diff changeset
278 END IF;
kono
parents:
diff changeset
279
kono
parents:
diff changeset
280 IF F (CACCR2 (NAR)) /= 2 THEN
kono
parents:
diff changeset
281 FAILED ( "INCORRECT CONVERSION OF 'CACCR2 (NAR)'" );
kono
parents:
diff changeset
282 END IF;
kono
parents:
diff changeset
283
kono
parents:
diff changeset
284 IF F (NCACCR1 (AR)) /= 3 THEN
kono
parents:
diff changeset
285 FAILED ( "INCORRECT CONVERSION OF 'NCACCR (AR)'" );
kono
parents:
diff changeset
286 END IF;
kono
parents:
diff changeset
287 EXCEPTION
kono
parents:
diff changeset
288 WHEN OTHERS =>
kono
parents:
diff changeset
289 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
290 "CONSTRAINED ACCESS TYPES" );
kono
parents:
diff changeset
291 END;
kono
parents:
diff changeset
292
kono
parents:
diff changeset
293 DECLARE
kono
parents:
diff changeset
294 PACKAGE PKG1 IS
kono
parents:
diff changeset
295 TYPE PRIV IS PRIVATE;
kono
parents:
diff changeset
296 PRIVATE
kono
parents:
diff changeset
297 TYPE PRIV IS
kono
parents:
diff changeset
298 RECORD
kono
parents:
diff changeset
299 NULL;
kono
parents:
diff changeset
300 END RECORD;
kono
parents:
diff changeset
301 END PKG1;
kono
parents:
diff changeset
302
kono
parents:
diff changeset
303 USE PKG1;
kono
parents:
diff changeset
304
kono
parents:
diff changeset
305 PACKAGE PKG2 IS
kono
parents:
diff changeset
306 R : PRIV;
kono
parents:
diff changeset
307
kono
parents:
diff changeset
308 TYPE PRIV1 IS NEW PRIV;
kono
parents:
diff changeset
309 R1 : PRIV1;
kono
parents:
diff changeset
310
kono
parents:
diff changeset
311 TYPE PRIV2 IS NEW PRIV;
kono
parents:
diff changeset
312 R2 : PRIV2;
kono
parents:
diff changeset
313 END PKG2;
kono
parents:
diff changeset
314
kono
parents:
diff changeset
315 USE PKG2;
kono
parents:
diff changeset
316
kono
parents:
diff changeset
317 PACKAGE PKG3 IS
kono
parents:
diff changeset
318 TYPE NPRIV1 IS NEW PRIV1;
kono
parents:
diff changeset
319 NR : NPRIV1;
kono
parents:
diff changeset
320 END PKG3;
kono
parents:
diff changeset
321
kono
parents:
diff changeset
322 USE PKG3;
kono
parents:
diff changeset
323 BEGIN
kono
parents:
diff changeset
324 IF PRIV (R) /= R THEN
kono
parents:
diff changeset
325 FAILED ( "INCORRECT CONVERSION OF 'PRIV (R)'" );
kono
parents:
diff changeset
326 END IF;
kono
parents:
diff changeset
327
kono
parents:
diff changeset
328 IF PRIV (R1) /= R THEN
kono
parents:
diff changeset
329 FAILED ( "INCORRECT CONVERSION OF 'PRIV (R1)'" );
kono
parents:
diff changeset
330 END IF;
kono
parents:
diff changeset
331
kono
parents:
diff changeset
332 IF PRIV1 (R2) /= R1 THEN
kono
parents:
diff changeset
333 FAILED ( "INCORRECT CONVERSION OF 'PRIV1 (R2)'" );
kono
parents:
diff changeset
334 END IF;
kono
parents:
diff changeset
335
kono
parents:
diff changeset
336 IF PRIV2 (NR) /= R2 THEN
kono
parents:
diff changeset
337 FAILED ( "INCORRECT CONVERSION OF 'PRIV2 (NR)'" );
kono
parents:
diff changeset
338 END IF;
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 IF NPRIV1 (R) /= NR THEN
kono
parents:
diff changeset
341 FAILED ( "INCORRECT CONVERSION OF 'NPRIV (R)'" );
kono
parents:
diff changeset
342 END IF;
kono
parents:
diff changeset
343 EXCEPTION
kono
parents:
diff changeset
344 WHEN OTHERS =>
kono
parents:
diff changeset
345 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
346 "PRIVATE TYPES" );
kono
parents:
diff changeset
347 END;
kono
parents:
diff changeset
348
kono
parents:
diff changeset
349 DECLARE
kono
parents:
diff changeset
350 TASK TYPE TK;
kono
parents:
diff changeset
351 T : TK;
kono
parents:
diff changeset
352
kono
parents:
diff changeset
353 TYPE TK1 IS NEW TK;
kono
parents:
diff changeset
354 T1 : TK1;
kono
parents:
diff changeset
355
kono
parents:
diff changeset
356 TYPE TK2 IS NEW TK;
kono
parents:
diff changeset
357 T2 : TK2;
kono
parents:
diff changeset
358
kono
parents:
diff changeset
359 TYPE NTK1 IS NEW TK1;
kono
parents:
diff changeset
360 NT : NTK1;
kono
parents:
diff changeset
361
kono
parents:
diff changeset
362 TASK BODY TK IS
kono
parents:
diff changeset
363 BEGIN
kono
parents:
diff changeset
364 NULL;
kono
parents:
diff changeset
365 END;
kono
parents:
diff changeset
366
kono
parents:
diff changeset
367 FUNCTION F (T : TK) RETURN INTEGER IS
kono
parents:
diff changeset
368 BEGIN
kono
parents:
diff changeset
369 RETURN IDENT_INT (0);
kono
parents:
diff changeset
370 END F;
kono
parents:
diff changeset
371
kono
parents:
diff changeset
372 FUNCTION F (T : TK1) RETURN INTEGER IS
kono
parents:
diff changeset
373 BEGIN
kono
parents:
diff changeset
374 RETURN IDENT_INT (1);
kono
parents:
diff changeset
375 END F;
kono
parents:
diff changeset
376
kono
parents:
diff changeset
377 FUNCTION F (T : TK2) RETURN INTEGER IS
kono
parents:
diff changeset
378 BEGIN
kono
parents:
diff changeset
379 RETURN IDENT_INT (2);
kono
parents:
diff changeset
380 END F;
kono
parents:
diff changeset
381
kono
parents:
diff changeset
382 FUNCTION F (T : NTK1) RETURN INTEGER IS
kono
parents:
diff changeset
383 BEGIN
kono
parents:
diff changeset
384 RETURN IDENT_INT (3);
kono
parents:
diff changeset
385 END F;
kono
parents:
diff changeset
386
kono
parents:
diff changeset
387 BEGIN
kono
parents:
diff changeset
388 IF F (TK (T)) /= 0 THEN
kono
parents:
diff changeset
389 FAILED ( "INCORRECT CONVERSION OF 'TK (T))'" );
kono
parents:
diff changeset
390 END IF;
kono
parents:
diff changeset
391
kono
parents:
diff changeset
392 IF F (TK (T1)) /= 0 THEN
kono
parents:
diff changeset
393 FAILED ( "INCORRECT CONVERSION OF 'TK (T1))'" );
kono
parents:
diff changeset
394 END IF;
kono
parents:
diff changeset
395
kono
parents:
diff changeset
396 IF F (TK1 (T2)) /= 1 THEN
kono
parents:
diff changeset
397 FAILED ( "INCORRECT CONVERSION OF 'TK1 (T2))'" );
kono
parents:
diff changeset
398 END IF;
kono
parents:
diff changeset
399
kono
parents:
diff changeset
400 IF F (TK2 (NT)) /= 2 THEN
kono
parents:
diff changeset
401 FAILED ( "INCORRECT CONVERSION OF 'TK2 (NT))'" );
kono
parents:
diff changeset
402 END IF;
kono
parents:
diff changeset
403
kono
parents:
diff changeset
404 IF F (NTK1 (T)) /= 3 THEN
kono
parents:
diff changeset
405 FAILED ( "INCORRECT CONVERSION OF 'NTK (T))'" );
kono
parents:
diff changeset
406 END IF;
kono
parents:
diff changeset
407 EXCEPTION
kono
parents:
diff changeset
408 WHEN OTHERS =>
kono
parents:
diff changeset
409 FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
kono
parents:
diff changeset
410 "TASK TYPES" );
kono
parents:
diff changeset
411 END;
kono
parents:
diff changeset
412
kono
parents:
diff changeset
413 RESULT;
kono
parents:
diff changeset
414 END C46051A;