PageRenderTime 27ms CodeModel.GetById 27ms RepoModel.GetById 0ms app.codeStats 1ms

/gcc-4.6-pre/gcc/testsuite/ada/acats/tests/c7/c74302b.ada

https://github.com/GNA-SERVICES-INC/MoNGate
Ada | 308 lines | 222 code | 54 blank | 32 comment | 0 complexity | ed96f028ca11af40b3ba2093a404f55c MD5 | raw file
  1. -- C74302B.ADA
  2. -- Grant of Unlimited Rights
  3. --
  4. -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
  5. -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
  6. -- unlimited rights in the software and documentation contained herein.
  7. -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
  8. -- this public release, the Government intends to confer upon all
  9. -- recipients unlimited rights equal to those held by the Government.
  10. -- These rights include rights to use, duplicate, release or disclose the
  11. -- released technical data and computer software in whole or in part, in
  12. -- any manner and for any purpose whatsoever, and to have or permit others
  13. -- to do so.
  14. --
  15. -- DISCLAIMER
  16. --
  17. -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
  18. -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
  19. -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
  20. -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
  21. -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
  22. -- PARTICULAR PURPOSE OF SAID MATERIAL.
  23. --*
  24. -- OBJECTIVE:
  25. -- CHECK THAT WHEN THE FULL DECLARATION OF A DEFERRED CONSTANT IS
  26. -- GIVEN AS A MULTIPLE DECLARATION, THE INITIALIZATION EXPRESSION
  27. -- IS EVALUATED ONCE FOR EACH DEFERRED CONSTANT. (USE ENUMERATION,
  28. -- INTEGER, FIXED POINT, FLOATING POINT, ARRAY, RECORD (INCLUDING
  29. -- USE OF DEFAULT EXPRESSIONS FOR COMPONENTS), ACCESS, AND PRIVATE
  30. -- TYPES AS FULL DECLARATION OF PRIVATE TYPE)
  31. -- HISTORY:
  32. -- BCB 07/25/88 CREATED ORIGINAL TEST.
  33. WITH REPORT; USE REPORT;
  34. PROCEDURE C74302B IS
  35. TYPE ARR_RAN IS RANGE 1..2;
  36. BUMP : INTEGER := IDENT_INT(0);
  37. GENERIC
  38. TYPE DT IS (<>);
  39. FUNCTION F1 RETURN DT;
  40. GENERIC
  41. TYPE FE IS DELTA <>;
  42. FUNCTION F2 RETURN FE;
  43. GENERIC
  44. TYPE FLE IS DIGITS <>;
  45. FUNCTION F3 RETURN FLE;
  46. GENERIC
  47. TYPE CA IS ARRAY(ARR_RAN) OF INTEGER;
  48. FUNCTION F4 RETURN CA;
  49. GENERIC
  50. TYPE GP IS LIMITED PRIVATE;
  51. FUNCTION F5 (V : GP) RETURN GP;
  52. GENERIC
  53. TYPE GP1 IS LIMITED PRIVATE;
  54. FUNCTION F6 (V1 : GP1) RETURN GP1;
  55. GENERIC
  56. TYPE AC IS ACCESS INTEGER;
  57. FUNCTION F7 RETURN AC;
  58. GENERIC
  59. TYPE PP IS PRIVATE;
  60. FUNCTION F8 (P1 : PP) RETURN PP;
  61. FUNCTION F1 RETURN DT IS
  62. BEGIN
  63. BUMP := BUMP + 1;
  64. RETURN DT'VAL(BUMP);
  65. END F1;
  66. FUNCTION F2 RETURN FE IS
  67. BEGIN
  68. BUMP := BUMP + 1;
  69. RETURN FE(BUMP);
  70. END F2;
  71. FUNCTION F3 RETURN FLE IS
  72. BEGIN
  73. BUMP := BUMP + 1;
  74. RETURN FLE(BUMP);
  75. END F3;
  76. FUNCTION F4 RETURN CA IS
  77. BEGIN
  78. BUMP := BUMP + 1;
  79. RETURN ((BUMP,BUMP-1));
  80. END F4;
  81. FUNCTION F5 (V : GP) RETURN GP IS
  82. BEGIN
  83. BUMP := BUMP + 1;
  84. RETURN V;
  85. END F5;
  86. FUNCTION F6 (V1 : GP1) RETURN GP1 IS
  87. BEGIN
  88. BUMP := BUMP + 1;
  89. RETURN V1;
  90. END F6;
  91. FUNCTION F7 RETURN AC IS
  92. VAR : AC;
  93. BEGIN
  94. BUMP := BUMP + 1;
  95. VAR := NEW INTEGER'(BUMP);
  96. RETURN VAR;
  97. END F7;
  98. FUNCTION F8 (P1 : PP) RETURN PP IS
  99. BEGIN
  100. BUMP := BUMP + 1;
  101. RETURN P1;
  102. END F8;
  103. PACKAGE PACK IS
  104. TYPE SP IS PRIVATE;
  105. CONS : CONSTANT SP;
  106. PRIVATE
  107. TYPE SP IS RANGE 1 .. 100;
  108. CONS : CONSTANT SP := 50;
  109. END PACK;
  110. USE PACK;
  111. PACKAGE P IS
  112. TYPE INT IS PRIVATE;
  113. TYPE ENUM IS PRIVATE;
  114. TYPE FIX IS PRIVATE;
  115. TYPE FLT IS PRIVATE;
  116. TYPE CON_ARR IS PRIVATE;
  117. TYPE REC IS PRIVATE;
  118. TYPE REC1 IS PRIVATE;
  119. TYPE ACC IS PRIVATE;
  120. TYPE PRIV IS PRIVATE;
  121. GENERIC
  122. TYPE LP IS PRIVATE;
  123. FUNCTION GEN_EQUAL (Z1, Z2 : LP) RETURN BOOLEAN;
  124. I1, I2, I3, I4 : CONSTANT INT;
  125. E1, E2, E3, E4 : CONSTANT ENUM;
  126. FI1, FI2, FI3, FI4 : CONSTANT FIX;
  127. FL1, FL2, FL3, FL4 : CONSTANT FLT;
  128. CA1, CA2, CA3, CA4 : CONSTANT CON_ARR;
  129. R1, R2, R3, R4 : CONSTANT REC;
  130. R1A, R2A, R3A, R4A : CONSTANT REC1;
  131. A1, A2, A3, A4 : CONSTANT ACC;
  132. PR1, PR2, PR3, PR4 : CONSTANT PRIV;
  133. PRIVATE
  134. TYPE INT IS RANGE 1 .. 100;
  135. TYPE ENUM IS (ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE);
  136. TYPE FIX IS DELTA 2.0**(-1) RANGE -100.0 .. 100.0;
  137. TYPE FLT IS DIGITS 5 RANGE -100.0 .. 100.0;
  138. TYPE CON_ARR IS ARRAY(ARR_RAN) OF INTEGER;
  139. TYPE REC IS RECORD
  140. COMP1 : INTEGER;
  141. COMP2 : INTEGER;
  142. COMP3 : BOOLEAN;
  143. END RECORD;
  144. TYPE REC1 IS RECORD
  145. COMP1 : INTEGER := 10;
  146. COMP2 : INTEGER := 20;
  147. COMP3 : BOOLEAN := FALSE;
  148. END RECORD;
  149. TYPE ACC IS ACCESS INTEGER;
  150. TYPE PRIV IS NEW SP;
  151. FUNCTION DDT IS NEW F1 (INT);
  152. FUNCTION EDT IS NEW F1 (ENUM);
  153. FUNCTION FDT IS NEW F2 (FIX);
  154. FUNCTION FLDT IS NEW F3 (FLT);
  155. FUNCTION CADT IS NEW F4 (CON_ARR);
  156. FUNCTION RDT IS NEW F5 (REC);
  157. FUNCTION R1DT IS NEW F6 (REC1);
  158. FUNCTION ADT IS NEW F7 (ACC);
  159. FUNCTION PDT IS NEW F8 (PRIV);
  160. REC_OBJ : REC := (1,2,TRUE);
  161. REC1_OBJ : REC1 := (3,4,FALSE);
  162. I1, I2, I3, I4 : CONSTANT INT := DDT;
  163. E1, E2, E3, E4 : CONSTANT ENUM := EDT;
  164. FI1, FI2, FI3, FI4 : CONSTANT FIX := FDT;
  165. FL1, FL2, FL3, FL4 : CONSTANT FLT := FLDT;
  166. CA1, CA2, CA3, CA4 : CONSTANT CON_ARR := CADT;
  167. R1, R2, R3, R4 : CONSTANT REC := RDT(REC_OBJ);
  168. R1A, R2A, R3A, R4A : CONSTANT REC1 := R1DT(REC1_OBJ);
  169. A1, A2, A3, A4 : CONSTANT ACC := ADT;
  170. PR1, PR2, PR3, PR4 : CONSTANT PRIV := PDT(PRIV(CONS));
  171. END P;
  172. PACKAGE BODY P IS
  173. AVAR1 : ACC := NEW INTEGER'(29);
  174. AVAR2 : ACC := NEW INTEGER'(30);
  175. AVAR3 : ACC := NEW INTEGER'(31);
  176. AVAR4 : ACC := NEW INTEGER'(32);
  177. FUNCTION GEN_EQUAL (Z1, Z2 : LP) RETURN BOOLEAN IS
  178. BEGIN
  179. RETURN Z1 = Z2;
  180. END GEN_EQUAL;
  181. FUNCTION INT_EQUAL IS NEW GEN_EQUAL (INT);
  182. FUNCTION ENUM_EQUAL IS NEW GEN_EQUAL (ENUM);
  183. FUNCTION FIX_EQUAL IS NEW GEN_EQUAL (FIX);
  184. FUNCTION FLT_EQUAL IS NEW GEN_EQUAL (FLT);
  185. FUNCTION ARR_EQUAL IS NEW GEN_EQUAL (CON_ARR);
  186. FUNCTION REC_EQUAL IS NEW GEN_EQUAL (REC);
  187. FUNCTION REC1_EQUAL IS NEW GEN_EQUAL (REC1);
  188. FUNCTION ACC_EQUAL IS NEW GEN_EQUAL (INTEGER);
  189. FUNCTION PRIV_EQUAL IS NEW GEN_EQUAL (PRIV);
  190. BEGIN
  191. TEST ("C74302B", "CHECK THAT WHEN THE FULL DECLARATION OF " &
  192. "A DEFERRED CONSTANT IS GIVEN AS A " &
  193. "MULTIPLE DECLARATION, THE INITIALIZATION " &
  194. "EXPRESSION IS EVALUATED ONCE FOR EACH " &
  195. "DEFERRED CONSTANT");
  196. IF NOT EQUAL(BUMP,36) THEN
  197. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  198. "DEFERRED CONSTANTS IN A MULIPLE DECLARATION");
  199. END IF;
  200. IF NOT INT_EQUAL(I1,1) OR NOT INT_EQUAL(I2,2) OR
  201. NOT INT_EQUAL(I3,3) OR NOT INT_EQUAL(I4,4) THEN
  202. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  203. "DEFERRED INTEGER CONSTANTS");
  204. END IF;
  205. IF NOT ENUM_EQUAL(E1,SIX) OR NOT ENUM_EQUAL(E2,SEVEN) OR
  206. NOT ENUM_EQUAL(E3,EIGHT) OR NOT ENUM_EQUAL(E4,NINE) THEN
  207. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  208. "DEFERRED ENUMERATION CONSTANTS");
  209. END IF;
  210. IF NOT FIX_EQUAL(FI1,9.0) OR NOT FIX_EQUAL(FI2,10.0) OR
  211. NOT FIX_EQUAL(FI3,11.0) OR NOT FIX_EQUAL(FI4,12.0) THEN
  212. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  213. "DEFERRED FIXED POINT CONSTANTS");
  214. END IF;
  215. IF NOT FLT_EQUAL(FL1,13.0) OR NOT FLT_EQUAL(FL2,14.0) OR
  216. NOT FLT_EQUAL(FL3,15.0) OR NOT FLT_EQUAL(FL4,16.0) THEN
  217. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  218. "DEFERRED FLOATING POINT CONSTANTS");
  219. END IF;
  220. IF NOT ARR_EQUAL(CA1,(17,16)) OR NOT ARR_EQUAL(CA2,(18,17))
  221. OR NOT ARR_EQUAL(CA3,(19,18)) OR NOT ARR_EQUAL(CA4,(20,19))
  222. THEN FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  223. "DEFERRED ARRAY CONSTANTS");
  224. END IF;
  225. IF NOT REC_EQUAL(R1,REC_OBJ) OR NOT REC_EQUAL(R2,REC_OBJ)
  226. OR NOT REC_EQUAL(R3,REC_OBJ) OR NOT REC_EQUAL(R4,REC_OBJ)
  227. THEN FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  228. "DEFERRED RECORD CONSTANTS");
  229. END IF;
  230. IF NOT REC1_EQUAL(R1A,REC1_OBJ) OR NOT REC1_EQUAL(R2A,
  231. REC1_OBJ) OR NOT REC1_EQUAL(R3A,REC1_OBJ) OR NOT
  232. REC1_EQUAL(R4A,REC1_OBJ) THEN
  233. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  234. "DEFERRED RECORD CONSTANTS WITH DEFAULT " &
  235. "EXPRESSIONS");
  236. END IF;
  237. IF NOT ACC_EQUAL(A1.ALL,AVAR1.ALL) OR NOT ACC_EQUAL(A2.ALL,
  238. AVAR2.ALL) OR NOT ACC_EQUAL(A3.ALL,AVAR3.ALL) OR NOT
  239. ACC_EQUAL(A4.ALL,AVAR4.ALL) THEN
  240. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  241. "DEFERRED ACCESS CONSTANTS");
  242. END IF;
  243. IF NOT PRIV_EQUAL(PR1,PRIV(CONS)) OR NOT PRIV_EQUAL(PR2,
  244. PRIV(CONS)) OR NOT PRIV_EQUAL(PR3,PRIV(CONS)) OR NOT
  245. PRIV_EQUAL(PR4,PRIV(CONS)) THEN
  246. FAILED ("IMPROPER RESULTS FROM INITIALIZATION OF " &
  247. "DEFERRED PRIVATE CONSTANTS");
  248. END IF;
  249. RESULT;
  250. END P;
  251. USE P;
  252. BEGIN
  253. NULL;
  254. END C74302B;