3 -- Grant of Unlimited Rights
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
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.
25 -- CHECK THAT ACTIVATION OF TASKS CREATED BY ALLOCATORS PRESENT IN A
26 -- DECLARATIVE PART TAKES PLACE DURING ELABORATION OF THE
27 -- CORRESPONDING DECLARATION.
29 -- (A) A SIMPLE TASK ALLOCATOR, IN A BLOCK.
30 -- (B) AN ARRAY OF TASK ALLOCATOR, IN A FUNCTION.
31 -- (C) A RECORD OF TASK ALLOCATOR, IN A PACKAGE SPECIFICATION.
32 -- (D) A RECORD OF ARRAY OF TASK ALLOCATOR, IN A PACKAGE BODY.
33 -- (E) AN ARRAY OF RECORD OF TASK ALLOCATOR, IN A TASK BODY.
38 -- RJW 8/4/86 ADDED CHECKS ON INITIALIZATIONS OF NON-TASK COMPONENTS
40 -- PWN 11/30/94 REMOVED PRAGMA PRIORITY INSTANCES FOR ADA 9X.
42 WITH REPORT
; USE REPORT
;
43 WITH SYSTEM
; USE SYSTEM
;
48 FUNCTION SIDE_EFFECT
(I
: INTEGER) RETURN INTEGER IS
50 GLOBAL
:= IDENT_INT
(I
);
59 I
: INTEGER := SIDE_EFFECT
(1);
66 TEST
("C93003A", "CHECK THAT ACTIVATION OF TASKS CREATED BY " &
67 "ALLOCATORS PRESENT IN A DECLARATIVE PART " &
68 "TAKES PLACE DURING ELABORATION OF THE " &
69 "CORRESPONDING DECLARATION");
71 --------------------------------------------------
73 GLOBAL
:= IDENT_INT
(0);
79 I1
: INTEGER := GLOBAL
;
80 J
: INTEGER := SIDE_EFFECT
(0);
82 I2
: INTEGER := GLOBAL
;
86 IF I1
/= 1 OR I2
/= 1 THEN
87 FAILED
("A SIMPLE TASK ALLOCATOR IN A BLOCK WAS " &
88 "ACTIVATED TOO LATE - (A)");
93 --------------------------------------------------
95 GLOBAL
:= IDENT_INT
(0);
101 FUNCTION F
RETURN INTEGER IS
103 TYPE A_T
IS ARRAY (1 .. 1) OF TT
;
104 TYPE A
IS ACCESS A_T
;
106 I1
: INTEGER := GLOBAL
;
107 J
: INTEGER := SIDE_EFFECT
(0);
109 I2
: INTEGER := GLOBAL
;
112 IF I1
/= 1 OR I2
/= 1 THEN
113 FAILED
("AN ARRAY OF TASK ALLOCATOR IN A " &
114 "FUNCTION WAS ACTIVATED TOO LATE - (B)");
125 --------------------------------------------------
127 GLOBAL
:= IDENT_INT
(0);
135 N1
: INTEGER := GLOBAL
;
140 M
: INTEGER := GLOBAL
;
148 I1
: INTEGER := GLOBAL
;
149 J
: INTEGER := SIDE_EFFECT
(0);
151 I2
: INTEGER := GLOBAL
;
157 IF P
.R1
.M
/= 0 OR P
.R1
.N
.N1
/= 0 THEN
158 FAILED
("NON-TASK COMPONENTS OF RECORD R1 NOT " &
159 "INITIALIZED BEFORE TASK ACTIVATED - (C1)" );
162 IF P
.R2
.M
/= 0 OR P
.R2
.N
.N1
/= 0 THEN
163 FAILED
("NON-TASK COMPONENTS OF RECORD R2 NOT " &
164 "INITIALIZED BEFORE TASK ACTIVATED - (C1)" );
167 IF P
.I1
/= 1 OR P
.I2
/= 1 THEN
168 FAILED
("A RECORD OF TASK ALLOCATOR IN A PACKAGE " &
169 "SPECIFICATION WAS ACTIVATED TOO LATE - (C1)");
174 --------------------------------------------------
176 GLOBAL
:= IDENT_INT
(0);
184 TYPE GRADE
IS (GOOD
, FAIR
, POOR
);
186 TYPE REC
(G
: GRADE
) IS
191 TYPE ACCR
IS ACCESS REC
;
193 TYPE ACCI
IS ACCESS INTEGER;
197 M
: ACCR
:= NEW REC
(GRADE
'VAL (GLOBAL
));
199 N
: ACCI
:= NEW INTEGER'(GLOBAL);
205 I1 : INTEGER := GLOBAL;
206 J2 : INTEGER := SIDE_EFFECT (0);
208 I2 : INTEGER := GLOBAL;
214 IF R1.M.G /= GOOD OR R1.N.ALL /= 0 THEN
215 FAILED ("NON-TASK COMPONENTS OF RECORD R1 NOT " &
216 "INITIALIZED BEFORE TASK ACTIVATED " &
220 IF R2.M.G /= GOOD OR R2.N.ALL /= 0 THEN
221 FAILED ("NON-TASK COMPONENTS OF RECORD R2 NOT " &
222 "INITIALIZED BEFORE TASK ACTIVATED " &
226 IF I1 /= 1 OR I2 /= 1 THEN
227 FAILED ("A RECORD OF TASK ALLOCATOR IN A PACKAGE " &
228 "SPECIFICATION WAS ACTIVATED TOO LATE " &
239 --------------------------------------------------
241 GLOBAL := IDENT_INT (0);
247 TYPE ARR IS ARRAY (1 .. 1) OF TT;
248 TYPE INTARR IS ARRAY (1 .. 1) OF INTEGER;
252 M : INTARR := (1 => GLOBAL);
254 N : INTARR := (1 => GLOBAL);
260 TYPE A IS ACCESS RAT;
263 I1 : INTEGER := GLOBAL;
264 J : INTEGER := SIDE_EFFECT (0);
266 I2 : INTEGER := GLOBAL;
269 IF RA1.M (1) /= 0 OR RA1.N (1) /= 0 THEN
270 FAILED ("NON-TASK COMPONENTS OF RECORD RA1 NOT " &
271 "INITIALIZED BEFORE TASK ACTIVATED " &
275 IF RA2.M (1) /= 0 OR RA2.N (1) /= 0 THEN
276 FAILED ("NON-TASK COMPONENTS OF RECORD RA2 NOT " &
277 "INITIALIZED BEFORE TASK ACTIVATED " &
281 IF I1 /= 1 OR I2 /= 1 THEN
282 FAILED ("A RECORD OF ARRAY OF TASK ALLOCATOR IN " &
283 "A PACKAGE BODY WAS ACTIVATED " &
294 --------------------------------------------------
296 GLOBAL := IDENT_INT (0);
307 M : BOOLEAN := BOOLEAN'VAL (GLOBAL);
309 N : CHARACTER := CHARACTER'VAL (GLOBAL);
312 TYPE ART IS ARRAY (1 .. 1) OF RT;
313 TYPE A IS ACCESS ART;
316 I1 : INTEGER := GLOBAL;
317 J : INTEGER := SIDE_EFFECT (0);
319 I2 : INTEGER := GLOBAL;
322 IF AR1.ALL (1).M /= FALSE OR
323 AR1.ALL (1).N /= ASCII.NUL THEN
324 FAILED ("NON-TASK COMPONENTS OF RECORD AR1 NOT " &
325 "INITIALIZED BEFORE TASK ACTIVATED " &
329 IF AR2.ALL (1).M /= FALSE OR
330 AR2.ALL (1).N /= ASCII.NUL THEN
331 FAILED ("NON-TASK COMPONENTS OF RECORD AR2 NOT " &
332 "INITIALIZED BEFORE TASK ACTIVATED " &
336 IF I1 /= 1 OR I2 /= 1 THEN
337 FAILED ("AN ARRAY OF RECORD OF TASK ALLOCATOR IN " &
338 "A TASK BODY WAS ACTIVATED TOO LATE - (E)");
348 --------------------------------------------------