1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
|
-- C95071A.ADA
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- CHECK THAT OBJECTS DESIGNATED BY IN PARAMETERS OF ACCESS TYPES CAN
-- BE USED AS THE TARGET OF AN ASSIGNMENT STATEMENT AND AS AN ACTUAL
-- PARAMETER OF ANY MODE. SUBTESTS ARE:
-- (A) INTEGER ACCESS TYPE.
-- (B) ARRAY ACCESS TYPE.
-- (C) RECORD ACCESS TYPE.
-- JWC 7/11/85
WITH REPORT; USE REPORT;
PROCEDURE C95071A IS
BEGIN
TEST ("C95071A", "CHECK THAT COMPONENTS OF ACCESS IN PARAMETERS " &
"MAY BE USED IN ASSIGNMENT CONTEXTS");
--------------------------------------------------
DECLARE -- (A)
TYPE PTRINT IS ACCESS INTEGER;
PI : PTRINT;
TASK TA IS
ENTRY EA (PI : IN PTRINT);
END TA;
TASK BODY TA IS
BEGIN
ACCEPT EA (PI : IN PTRINT) DO
DECLARE
TASK TA1 IS
ENTRY EA1 (I : OUT INTEGER);
ENTRY EA2 (I : IN OUT INTEGER);
END TA1;
TASK BODY TA1 IS
BEGIN
ACCEPT EA1 (I : OUT INTEGER) DO
I := 7;
END EA1;
ACCEPT EA2 (I : IN OUT INTEGER) DO
I := I + 1;
END EA2;
END TA1;
BEGIN
TA1.EA1 (PI.ALL);
TA1.EA2 (PI.ALL);
PI.ALL := PI.ALL + 1;
IF (PI.ALL /= 9) THEN
FAILED ("ASSIGNMENT TO COMPONENT OF " &
"INTEGER ACCESS PARAMETER " &
"FAILED");
END IF;
END;
END EA;
END TA;
BEGIN -- (A)
PI := NEW INTEGER'(0);
TA.EA (PI);
END; -- (A)
---------------------------------------------
DECLARE -- (B)
TYPE TBL IS ARRAY (1..3) OF INTEGER;
TYPE PTRTBL IS ACCESS TBL;
PT : PTRTBL;
TASK TB IS
ENTRY EB (PT : IN PTRTBL);
END TB;
TASK BODY TB IS
BEGIN
ACCEPT EB (PT : IN PTRTBL) DO
DECLARE
TASK TB1 IS
ENTRY EB1 (T : OUT TBL);
ENTRY EB2 (T : IN OUT TBL);
ENTRY EB3 (I : OUT INTEGER);
ENTRY EB4 (I : IN OUT INTEGER);
END TB1;
TASK BODY TB1 IS
BEGIN
ACCEPT EB1 (T : OUT TBL) DO
T := (1,2,3);
END EB1;
ACCEPT EB2 (T : IN OUT TBL) DO
T(3) := T(3) - 1;
END EB2;
ACCEPT EB3 (I : OUT INTEGER) DO
I := 7;
END EB3;
ACCEPT EB4 (I : IN OUT INTEGER) DO
I := I + 1;
END EB4;
END TB1;
BEGIN
TB1.EB1 (PT.ALL); -- (1,2,3)
TB1.EB2 (PT.ALL); -- (1,2,2)
TB1.EB3 (PT(2)); -- (1,7,2)
TB1.EB4 (PT(1)); -- (2,7,2)
PT(3) := PT(3) + 7; -- (2,7,9)
IF (PT.ALL /= (2,7,9)) THEN
FAILED ("ASSIGNMENT TO COMPONENT OF " &
"ARRAY ACCESS PARAMETER FAILED");
END IF;
END;
END EB;
END TB;
BEGIN -- (B)
PT := NEW TBL'(0,0,0);
TB.EB (PT);
END; -- (B)
---------------------------------------------
DECLARE -- (C)
TYPE REC IS
RECORD
I1 : INTEGER;
I2 : INTEGER;
I3 : INTEGER;
END RECORD;
TYPE PTRREC IS ACCESS REC;
PR : PTRREC;
TASK TC IS
ENTRY EC (PR : IN PTRREC);
END TC;
TASK BODY TC IS
BEGIN
ACCEPT EC (PR : IN PTRREC) DO
DECLARE
TASK TC1 IS
ENTRY EC1 (R : OUT REC);
ENTRY EC2 (R : IN OUT REC);
ENTRY EC3 (I : OUT INTEGER);
ENTRY EC4 (I : IN OUT INTEGER);
END TC1;
TASK BODY TC1 IS
BEGIN
ACCEPT EC1 (R : OUT REC) DO
R := (1,2,3);
END EC1;
ACCEPT EC2 (R : IN OUT REC) DO
R.I3 := R.I3 - 1;
END EC2;
ACCEPT EC3 (I : OUT INTEGER) DO
I := 7;
END EC3;
ACCEPT EC4 (I : IN OUT INTEGER) DO
I := I + 1;
END EC4;
END TC1;
BEGIN
TC1.EC1 (PR.ALL); -- (1,2,3)
TC1.EC2 (PR.ALL); -- (1,2,2)
TC1.EC3 (PR.I2); -- (1,7,2)
TC1.EC4 (PR.I1); -- (2,7,2)
PR.I3 := PR.I3 + 7; -- (2,7,9)
IF (PR.ALL /= (2,7,9)) THEN
FAILED ("ASSIGNMENT TO COMPONENT OF " &
"RECORD ACCESS PARAMETER " &
"FAILED");
END IF;
END;
END EC;
END TC;
BEGIN -- (C)
PR := NEW REC'(0,0,0);
TC.EC (PR);
END; -- (C)
---------------------------------------------
RESULT;
END C95071A;
|