1-- C52010A.ADA 2 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. 15-- 16-- DISCLAIMER 17-- 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 RECORD ASSIGNMENTS USE "COPY" SEMANTICS. (PART I). 26 27 28-- FACTORS AFFECTING THE SITUATION TO BE TESTED: 29-- 30-- COMPONENT TYPE * INTEGER 31-- * BOOLEAN (OMITTED) 32-- * CHARACTER (OMITTED) 33-- * USER-DEFINED ENUMERATION 34-- 35-- DERIVED VS. NON-DERIVED 36-- 37-- TYPE VS. SUBTYPE 38-- 39-- ORDER OF COMPONENT ASSIGNMENTS * LEFT-TO-RIGHT 40-- * RIGHT-TO-LEFT 41-- * INSIDE-OUT 42-- * OUTSIDE IN 43 44 45-- RM 02/23/80 46-- SPS 3/21/83 47 48WITH REPORT; 49PROCEDURE C52010A IS 50 51 USE REPORT; 52 53 TYPE ENUM IS ( AA , BB , CC , DD , EE , FF , GG , HH , 54 II , JJ , KK , LL , MM , NN , PP , QQ , 55 TT , UU , VV , WW , XX , YY ); 56 57BEGIN 58 59 TEST ( "C52010A" , "CHECK THAT RECORD ASSIGNMENTS USE ""COPY""" & 60 " SEMANTICS" ); 61 62 63 DECLARE 64 TYPE REC IS 65 RECORD 66 X , Y : INTEGER ; 67 END RECORD; 68 R : REC ; 69 BEGIN 70 71 R := ( 5 , 8 ) ; 72 R := ( X => 1 , Y => R.X ) ; 73 IF R /= ( 1 , 5 ) THEN 74 FAILED ( "WRONG VALUE (1)" ); 75 END IF; 76 77 R := ( 5 , 8 ) ; 78 R := ( Y => 1 , X => R.Y ) ; 79 IF R /= ( 8 , 1 ) THEN 80 FAILED ( "WRONG VALUE (2)" ); 81 END IF; 82 83 R := ( 5 , 8 ) ; 84 R := ( R.Y+1 , R.X+1 ) ; 85 IF R /= ( 9 , 6 ) THEN 86 FAILED ( "WRONG VALUE (3)" ); 87 END IF; 88 89 END; 90 91 DECLARE 92 TYPE REC3 IS 93 RECORD 94 DEEP0 : INTEGER ; 95 DEEP : INTEGER ; 96 END RECORD; 97 TYPE REC2 IS 98 RECORD 99 YX : REC3 ; 100 MODERATE : INTEGER ; 101 END RECORD; 102 TYPE REC IS 103 RECORD 104 SHALLOW : INTEGER ; 105 YZ : REC2 ; 106 END RECORD; 107 R : REC ; 108 BEGIN 109 R := ( 0 , ((5, 1 ), 2 )); 110 R := ( R.YZ.MODERATE+8, ((7, R.SHALLOW+1),R.YZ.YX.DEEP+99)); 111 IF R/= ( 10, ((7, 1), 100)) 112 THEN 113 FAILED ( "WRONG VALUE (4)" ); 114 END IF; 115 END; 116 117 118 DECLARE 119 TYPE SUB_ENUM IS NEW ENUM RANGE AA..DD ; 120 TYPE REC IS 121 RECORD 122 X , Y : SUB_ENUM ; 123 END RECORD; 124 R : REC ; 125 BEGIN 126 R := ( AA , CC ) ; 127 R := ( X => BB , Y => R.X ) ; 128 IF R /= ( BB , AA ) THEN 129 FAILED ( "WRONG VALUE (5)" ); 130 END IF; 131 132 R := ( AA , CC ) ; 133 R := ( Y => BB , X => R.Y ) ; 134 IF R /= ( CC , BB ) THEN 135 FAILED ( "WRONG VALUE (6)" ); 136 END IF; 137 138 R := ( AA , CC ) ; 139 R := ( SUB_ENUM'SUCC( R.Y ) , SUB_ENUM'SUCC( R.X ) ) ; 140 IF R /= ( DD , BB ) THEN 141 FAILED ( "WRONG VALUE (7)" ); 142 END IF; 143 144 END; 145 146 147 DECLARE 148 TYPE REC3 IS 149 RECORD 150 DEEP0 : ENUM ; 151 DEEP : ENUM ; 152 END RECORD; 153 TYPE REC2 IS 154 RECORD 155 YX : REC3 ; 156 MODERATE : ENUM ; 157 END RECORD; 158 TYPE REC IS 159 RECORD 160 SHALLOW : ENUM ; 161 YZ : REC2 ; 162 END RECORD; 163 R : REC ; 164 BEGIN 165 166 R := ( TT , 167 (( YY , II ) , 168 AA ) ) ; 169 170 R := ( ENUM'SUCC(ENUM'SUCC( R.YZ.MODERATE )) , 171 (( AA , ENUM'SUCC( R.SHALLOW ) ) , 172 ( ENUM'SUCC(ENUM'SUCC(ENUM'SUCC(ENUM'SUCC( 173 R.YZ.YX.DEEP )))) ) ) ) ; 174 175 IF R/= ( CC , 176 (( AA , UU ) , 177 MM ) ) 178 THEN 179 FAILED ( "WRONG VALUE (8)" ); 180 END IF; 181 182 END; 183 184 RESULT ; 185 186END C52010A ; 187