Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / ada / acats / tests / c9 / c95071a.ada
bloba7153993d0813aa0d515b2e0a4a7e78e93930a8f
1 -- C95071A.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 OBJECTS DESIGNATED BY IN PARAMETERS OF ACCESS TYPES CAN
26 -- BE USED AS THE TARGET OF AN ASSIGNMENT STATEMENT AND AS AN ACTUAL
27 -- PARAMETER OF ANY MODE. SUBTESTS ARE:
28 -- (A) INTEGER ACCESS TYPE.
29 -- (B) ARRAY ACCESS TYPE.
30 -- (C) RECORD ACCESS TYPE.
32 -- JWC 7/11/85
34 WITH REPORT; USE REPORT;
35 PROCEDURE C95071A IS
37 BEGIN
39 TEST ("C95071A", "CHECK THAT COMPONENTS OF ACCESS IN PARAMETERS " &
40 "MAY BE USED IN ASSIGNMENT CONTEXTS");
42 --------------------------------------------------
44 DECLARE -- (A)
46 TYPE PTRINT IS ACCESS INTEGER;
47 PI : PTRINT;
49 TASK TA IS
50 ENTRY EA (PI : IN PTRINT);
51 END TA;
53 TASK BODY TA IS
54 BEGIN
55 ACCEPT EA (PI : IN PTRINT) DO
56 DECLARE
57 TASK TA1 IS
58 ENTRY EA1 (I : OUT INTEGER);
59 ENTRY EA2 (I : IN OUT INTEGER);
60 END TA1;
62 TASK BODY TA1 IS
63 BEGIN
64 ACCEPT EA1 (I : OUT INTEGER) DO
65 I := 7;
66 END EA1;
68 ACCEPT EA2 (I : IN OUT INTEGER) DO
69 I := I + 1;
70 END EA2;
71 END TA1;
73 BEGIN
74 TA1.EA1 (PI.ALL);
75 TA1.EA2 (PI.ALL);
76 PI.ALL := PI.ALL + 1;
77 IF (PI.ALL /= 9) THEN
78 FAILED ("ASSIGNMENT TO COMPONENT OF " &
79 "INTEGER ACCESS PARAMETER " &
80 "FAILED");
81 END IF;
82 END;
83 END EA;
84 END TA;
86 BEGIN -- (A)
88 PI := NEW INTEGER'(0);
89 TA.EA (PI);
91 END; -- (A)
93 ---------------------------------------------
95 DECLARE -- (B)
97 TYPE TBL IS ARRAY (1..3) OF INTEGER;
98 TYPE PTRTBL IS ACCESS TBL;
99 PT : PTRTBL;
101 TASK TB IS
102 ENTRY EB (PT : IN PTRTBL);
103 END TB;
105 TASK BODY TB IS
106 BEGIN
107 ACCEPT EB (PT : IN PTRTBL) DO
108 DECLARE
109 TASK TB1 IS
110 ENTRY EB1 (T : OUT TBL);
111 ENTRY EB2 (T : IN OUT TBL);
112 ENTRY EB3 (I : OUT INTEGER);
113 ENTRY EB4 (I : IN OUT INTEGER);
114 END TB1;
116 TASK BODY TB1 IS
117 BEGIN
118 ACCEPT EB1 (T : OUT TBL) DO
119 T := (1,2,3);
120 END EB1;
122 ACCEPT EB2 (T : IN OUT TBL) DO
123 T(3) := T(3) - 1;
124 END EB2;
126 ACCEPT EB3 (I : OUT INTEGER) DO
127 I := 7;
128 END EB3;
130 ACCEPT EB4 (I : IN OUT INTEGER) DO
131 I := I + 1;
132 END EB4;
133 END TB1;
135 BEGIN
136 TB1.EB1 (PT.ALL); -- (1,2,3)
137 TB1.EB2 (PT.ALL); -- (1,2,2)
138 TB1.EB3 (PT(2)); -- (1,7,2)
139 TB1.EB4 (PT(1)); -- (2,7,2)
140 PT(3) := PT(3) + 7; -- (2,7,9)
141 IF (PT.ALL /= (2,7,9)) THEN
142 FAILED ("ASSIGNMENT TO COMPONENT OF " &
143 "ARRAY ACCESS PARAMETER FAILED");
144 END IF;
145 END;
146 END EB;
147 END TB;
149 BEGIN -- (B)
151 PT := NEW TBL'(0,0,0);
152 TB.EB (PT);
154 END; -- (B)
156 ---------------------------------------------
158 DECLARE -- (C)
160 TYPE REC IS
161 RECORD
162 I1 : INTEGER;
163 I2 : INTEGER;
164 I3 : INTEGER;
165 END RECORD;
167 TYPE PTRREC IS ACCESS REC;
168 PR : PTRREC;
170 TASK TC IS
171 ENTRY EC (PR : IN PTRREC);
172 END TC;
174 TASK BODY TC IS
175 BEGIN
176 ACCEPT EC (PR : IN PTRREC) DO
177 DECLARE
178 TASK TC1 IS
179 ENTRY EC1 (R : OUT REC);
180 ENTRY EC2 (R : IN OUT REC);
181 ENTRY EC3 (I : OUT INTEGER);
182 ENTRY EC4 (I : IN OUT INTEGER);
183 END TC1;
185 TASK BODY TC1 IS
186 BEGIN
187 ACCEPT EC1 (R : OUT REC) DO
188 R := (1,2,3);
189 END EC1;
191 ACCEPT EC2 (R : IN OUT REC) DO
192 R.I3 := R.I3 - 1;
193 END EC2;
195 ACCEPT EC3 (I : OUT INTEGER) DO
196 I := 7;
197 END EC3;
199 ACCEPT EC4 (I : IN OUT INTEGER) DO
200 I := I + 1;
201 END EC4;
202 END TC1;
204 BEGIN
205 TC1.EC1 (PR.ALL); -- (1,2,3)
206 TC1.EC2 (PR.ALL); -- (1,2,2)
207 TC1.EC3 (PR.I2); -- (1,7,2)
208 TC1.EC4 (PR.I1); -- (2,7,2)
209 PR.I3 := PR.I3 + 7; -- (2,7,9)
210 IF (PR.ALL /= (2,7,9)) THEN
211 FAILED ("ASSIGNMENT TO COMPONENT OF " &
212 "RECORD ACCESS PARAMETER " &
213 "FAILED");
214 END IF;
215 END;
216 END EC;
217 END TC;
219 BEGIN -- (C)
221 PR := NEW REC'(0,0,0);
222 TC.EC (PR);
224 END; -- (C)
226 ---------------------------------------------
228 RESULT;
230 END C95071A;