2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / c9 / c94007b.ada
blob87e45b3529c6acfc9d00a8fe6c4f4abc9616262f
1 -- C94007B.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 -- CHECK THAT A TASK THAT IS ALLOCATED IN A NON-LIBRARY PACKAGE
26 -- (SPECIFICATION OR BODY) DOES NOT "DEPEND" ON THE PACKAGE,
27 -- BUT ON THE INNERMOST ENCLOSING BLOCK, SUBPROGRAM BODY,
28 -- OR TASK BODY.
29 -- SUBTESTS ARE:
30 -- (A) A SIMPLE TASK ALLOCATOR, IN A VISIBLE PART, IN A BLOCK.
31 -- (B) A RECORD OF TASK ALLOCATOR, IN A PRIVATE PART, IN A FUNCTION.
32 -- (C) A RECORD OF ARRAY OF TASK ALLOCATOR, IN A PACKAGE BODY,
33 -- IN A TASK BODY.
35 -- JRK 10/16/81
36 -- SPS 11/2/82
37 -- PWN 01/31/95 REMOVED PRAGMA PRIORITY FOR ADA 9X.
39 with Impdef;
40 WITH REPORT; USE REPORT;
41 WITH SYSTEM; USE SYSTEM;
42 PROCEDURE C94007B IS
44 TASK TYPE SYNC IS
45 ENTRY ID (C : CHARACTER);
46 ENTRY INNER;
47 ENTRY OUTER;
48 END SYNC;
50 TASK BODY SYNC IS
51 ID_C : CHARACTER;
52 BEGIN
53 ACCEPT ID (C : CHARACTER) DO
54 ID_C := C;
55 END ID;
56 DELAY 1.0 * Impdef.One_Second;
57 SELECT
58 ACCEPT OUTER;
60 DELAY 120.0 * Impdef.One_Second;
61 FAILED ("PROBABLY BLOCKED - (" & ID_C & ')');
62 END SELECT;
63 ACCEPT INNER;
64 END SYNC;
67 BEGIN
68 TEST ("C94007B", "CHECK THAT A TASK THAT IS ALLOCATED IN A " &
69 "NON-LIBRARY PACKAGE (SPECIFICATION OR BODY) " &
70 "DOES NOT ""DEPEND"" ON THE PACKAGE, BUT ON " &
71 "THE INNERMOST ENCLOSING BLOCK, SUBPROGRAM " &
72 "BODY, OR TASK BODY");
74 --------------------------------------------------
76 DECLARE -- (A)
78 S : SYNC;
80 BEGIN -- (A)
82 S.ID ('A');
84 DECLARE
86 PACKAGE PKG IS
87 TASK TYPE TT IS
88 ENTRY E;
89 END TT;
90 TYPE A_T IS ACCESS TT;
91 A : A_T;
92 END PKG;
94 PACKAGE BODY PKG IS
95 TASK BODY TT IS
96 BEGIN
97 S.INNER; -- PROBABLE INNER BLOCK POINT.
98 END TT;
99 BEGIN
100 A := NEW TT;
101 END PKG; -- PROBABLE OUTER BLOCK POINT.
103 BEGIN
105 S.OUTER;
107 EXCEPTION
108 WHEN TASKING_ERROR => NULL;
109 END;
111 END; -- (A)
113 --------------------------------------------------
115 DECLARE -- (B)
117 S : SYNC;
119 I : INTEGER;
121 FUNCTION F RETURN INTEGER IS
123 PACKAGE PKG IS
124 PRIVATE
125 TASK TYPE TT IS
126 ENTRY E;
127 END TT;
129 TYPE RT IS
130 RECORD
131 T : TT;
132 END RECORD;
134 TYPE ART IS ACCESS RT;
136 AR : ART;
137 END PKG;
139 PACKAGE BODY PKG IS
140 TASK BODY TT IS
141 BEGIN
142 S.INNER; -- PROBABLE INNER BLOCK POINT.
143 END TT;
144 BEGIN
145 AR := NEW RT;
146 END PKG; -- PROBABLE OUTER BLOCK POINT.
148 BEGIN -- F
150 S.OUTER;
151 RETURN 0;
153 EXCEPTION
154 WHEN TASKING_ERROR => RETURN 0;
155 END F;
157 BEGIN -- (B)
159 S.ID ('B');
160 I := F ;
162 END; -- (B)
164 --------------------------------------------------
166 DECLARE -- (C)
168 S : SYNC;
170 BEGIN -- (C)
172 S.ID ('C');
174 DECLARE
176 TASK TSK IS
177 END TSK;
179 TASK BODY TSK IS
181 PACKAGE PKG IS
182 END PKG;
184 PACKAGE BODY PKG IS
185 TASK TYPE TT IS
186 ENTRY E;
187 END TT;
189 TYPE ARR IS ARRAY (1..1) OF TT;
190 TYPE RAT IS
191 RECORD
192 T : ARR;
193 END RECORD;
195 TYPE ARAT IS ACCESS RAT;
197 ARA : ARAT;
199 TASK BODY TT IS
200 BEGIN
201 S.INNER; -- PROBABLE INNER BLOCK POINT.
202 END TT;
203 BEGIN
204 ARA := NEW RAT;
205 END PKG; -- PROBABLE OUTER BLOCK POINT.
207 BEGIN -- TSK
209 S.OUTER;
211 EXCEPTION
212 WHEN TASKING_ERROR => NULL;
213 END TSK;
215 BEGIN
216 NULL;
217 END;
219 END; -- (C)
221 --------------------------------------------------
223 RESULT;
224 END C94007B;