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 DECLARED TASK OBJECTS ARE NOT ACTIVATED BEFORE
26 -- THE END OF THE DECLARATIVE PART.
28 -- (A) A SIMPLE TASK OBJECT, IN A BLOCK.
29 -- (B) AN ARRAY OF TASK OBJECT, IN A FUNCTION.
30 -- (C) A RECORD OF TASK OBJECT, IN A PACKAGE SPECIFICATION.
31 -- (D) A RECORD OF ARRAY OF TASK OBJECT, IN A PACKAGE BODY.
32 -- (E) AN ARRAY OF RECORD OF TASK OBJECT, IN A TASK BODY.
34 -- THIS TEST ASSUMES THAT ACTIVATION IS A SEQUENTIAL STEP
35 -- IN THE FLOW OF CONTROL OF THE PARENT (AS IS REQUIRED BY THE
36 -- ADA RM). IF AN IMPLEMENTATION (ILLEGALLY) ACTIVATES A
37 -- TASK IN PARALLEL WITH ITS PARENT, THIS TEST
38 -- IS NOT GUARANTEED TO DETECT THE VIOLATION, DUE TO A
44 -- R.WILLIAMS 10/8/86 ADDED CHECKS ON INITIALIZATIONS OF NON-TASK
45 -- COMPONENTS OF RECORD TYPES.
46 -- PWN 11/30/94 REMOVED PRAGMA PRIORITY INSTANCES FOR ADA 9X.
48 WITH REPORT
; USE REPORT
;
49 WITH SYSTEM
; USE SYSTEM
;
54 FUNCTION SIDE_EFFECT
(I
: INTEGER) RETURN INTEGER IS
56 GLOBAL
:= IDENT_INT
(I
);
65 I
: INTEGER := SIDE_EFFECT
(1);
72 TEST
("C93001A", "CHECK THAT DECLARED TASK OBJECTS ARE NOT " &
73 "ACTIVATED BEFORE THE END OF THE DECLARATIVE " &
77 --------------------------------------------------
79 GLOBAL
:= IDENT_INT
(0);
84 I
: INTEGER := GLOBAL
;
89 FAILED
("A SIMPLE TASK OBJECT IN A BLOCK WAS " &
90 "ACTIVATED TOO SOON - (A)");
95 --------------------------------------------------
97 GLOBAL
:= IDENT_INT
(0);
103 FUNCTION F
RETURN INTEGER IS
104 A
: ARRAY (1..1) OF TT
;
105 I
: INTEGER := GLOBAL
;
108 FAILED
("AN ARRAY OF TASK OBJECT IN A FUNCTION " &
109 "WAS ACTIVATED TOO SOON - (B)");
120 --------------------------------------------------
122 GLOBAL
:= IDENT_INT
(0);
131 N1
: INTEGER := GLOBAL
;
136 M
: INTEGER := GLOBAL
;
141 I
: INTEGER := GLOBAL
;
151 M
: INTEGER := GLOBAL
;
156 K
: INTEGER := GLOBAL
;
160 IF R
.M
/= 0 OR R
.N
.N1
/= 0 THEN
161 FAILED
( "NON-TASK COMPONENTS OF RECORD R NOT " &
162 "INITIALIZED BEFORE TASKS ACTIVATED " &
169 IF P
.R
.M
/= 0 OR P
.R
.N
.N1
/= 0 THEN
170 FAILED
( "NON-TASK COMPONENTS OF RECORDS NOT " &
171 "INITIALIZED BEFORE TASKS ACTIVATED " &
175 IF P
.I
/= 0 OR K
/= 0 THEN
176 FAILED
("A RECORD OF TASK OBJECT IN A PACKAGE " &
177 "SPECIFICATION WAS ACTIVATED TOO SOON - (C)");
182 --------------------------------------------------
184 GLOBAL
:= IDENT_INT
(0);
190 TYPE GRADE
IS (GOOD
, FAIR
, POOR
);
192 TYPE REC
(G
: GRADE
) IS
197 TYPE ACCR
IS ACCESS REC
;
198 TYPE ACCI
IS ACCESS INTEGER;
200 TYPE ARR
IS ARRAY (1..1) OF TT
;
203 M
: ACCR
:= NEW REC
(GRADE
'VAL (GLOBAL
));
205 N
: ACCI
:= NEW INTEGER'(GLOBAL);
214 I : INTEGER := GLOBAL;
216 IF RA1.M.G /= GOOD OR RA1.N.ALL /= 0 THEN
217 FAILED ( "NON-TASK COMPONENTS OF RECORD RA1 NOT " &
218 "INITIALIZED BEFORE TASKS ACTIVATED " &
222 IF RA2.M.G /= GOOD OR RA2.N.ALL /= 0 THEN
223 FAILED ( "NON-TASK COMPONENTS OF RECORD RA2 NOT " &
224 "INITIALIZED BEFORE TASKS ACTIVATED " &
228 IF RA3.M.G /= GOOD OR RA3.N.ALL /= 0 THEN
229 FAILED ( "NON-TASK COMPONENTS OF RECORD RA3 NOT " &
230 "INITIALIZED BEFORE TASKS ACTIVATED " &
235 FAILED ("A RECORD OF ARRAY OF TASK OBJECT IN A " &
236 "PACKAGE SPEC OR BODY WAS ACTIVATED " &
247 --------------------------------------------------
249 GLOBAL := IDENT_INT (0);
255 B : BOOLEAN := BOOLEAN'VAL (GLOBAL);
257 C :CHARACTER :=CHARACTER'VAL (GLOBAL);
271 AR : ARRAY (1..1) OF RT;
272 I : INTEGER := GLOBAL;
274 IF AR (1).M.B /= FALSE OR AR (1).M.C /= ASCII.NUL OR
275 AR (1).N.B /= FALSE OR AR (1).N.C /= ASCII.NUL THEN
276 FAILED ( "NON-TASK COMPONENTS OF RECORD RT NOT " &
277 "INITIALIZED BEFORE TASKS ACTIVATED " &
282 FAILED ("AN ARRAY OF RECORD OF TASK OBJECT IN A " &
283 "TASK BODY WAS ACTIVATED TOO SOON - (E)");
293 --------------------------------------------------