comparison gcc/testsuite/ada/acats/tests/c4/c43004c.ada @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 -- C43004C.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 -- OBJECTIVE:
26 -- CHECK THAT CONSTRAINT_ERROR IS RAISED IF THE VALUE OF A
27 -- DISCRIMINANT OF A CONSTRAINED COMPONENT OF AN AGGREGATE DOES
28 -- NOT EQUAL THE CORRESPONDING DISCRIMINANT VALUE FOR THE
29 -- COMPONENT'S SUBTYPE.
30
31 -- HISTORY:
32 -- BCB 07/19/88 CREATED ORIGINAL TEST.
33
34 WITH REPORT; USE REPORT;
35
36 PROCEDURE C43004C IS
37
38 ZERO : INTEGER := 0;
39
40 TYPE REC (D : INTEGER := 0) IS RECORD
41 COMP1 : INTEGER;
42 END RECORD;
43
44 TYPE DREC (DD : INTEGER := ZERO) IS RECORD
45 DCOMP1 : INTEGER;
46 END RECORD;
47
48 TYPE REC1 IS RECORD
49 A : REC(0);
50 END RECORD;
51
52 TYPE REC2 IS RECORD
53 B : DREC(ZERO);
54 END RECORD;
55
56 TYPE REC3 (D3 : INTEGER := 0) IS RECORD
57 C : REC(D3);
58 END RECORD;
59
60 V : REC1;
61 W : REC2;
62 X : REC3;
63
64 PACKAGE P IS
65 TYPE PRIV1 (D : INTEGER := 0) IS PRIVATE;
66 TYPE PRIV2 (DD : INTEGER := ZERO) IS PRIVATE;
67 FUNCTION INIT (I : INTEGER) RETURN PRIV1;
68 PRIVATE
69 TYPE PRIV1 (D : INTEGER := 0) IS RECORD
70 NULL;
71 END RECORD;
72
73 TYPE PRIV2 (DD : INTEGER := ZERO) IS RECORD
74 NULL;
75 END RECORD;
76 END P;
77
78 TYPE REC7 IS RECORD
79 H : P.PRIV1 (0);
80 END RECORD;
81
82 Y : REC7;
83
84 GENERIC
85 TYPE GP IS PRIVATE;
86 FUNCTION GEN_EQUAL (X, Y : GP) RETURN BOOLEAN;
87
88 FUNCTION GEN_EQUAL (X, Y : GP) RETURN BOOLEAN IS
89 BEGIN
90 RETURN X = Y;
91 END GEN_EQUAL;
92
93 PACKAGE BODY P IS
94 TYPE REC4 IS RECORD
95 E : PRIV1(0);
96 END RECORD;
97
98 TYPE REC5 IS RECORD
99 F : PRIV2(ZERO);
100 END RECORD;
101
102 TYPE REC6 (D6 : INTEGER := 0) IS RECORD
103 G : PRIV1(D6);
104 END RECORD;
105
106 VV : REC4;
107 WW : REC5;
108 XX : REC6;
109
110 FUNCTION REC4_EQUAL IS NEW GEN_EQUAL (REC4);
111 FUNCTION REC5_EQUAL IS NEW GEN_EQUAL (REC5);
112 FUNCTION REC6_EQUAL IS NEW GEN_EQUAL (REC6);
113
114 FUNCTION INIT (I : INTEGER) RETURN PRIV1 IS
115 VAR : PRIV1;
116 BEGIN
117 VAR := (D => I);
118 RETURN VAR;
119 END INIT;
120 BEGIN
121 TEST ("C43004C", "CHECK THAT CONSTRAINT_ERROR IS RAISED " &
122 "IF THE VALUE OF A DISCRIMINANT OF A " &
123 "CONSTRAINED COMPONENT OF AN AGGREGATE " &
124 "DOES NOT EQUAL THE CORRESPONDING " &
125 "DISCRIMINANT VALUE FOR THECOMPONENT'S " &
126 "SUBTYPE");
127
128 BEGIN
129 VV := (E => (D => 1));
130 FAILED ("CONSTRAINT_ERROR NOT RAISED - 1");
131 IF REC4_EQUAL (VV,VV) THEN
132 COMMENT ("DON'T OPTIMIZE VV");
133 END IF;
134 EXCEPTION
135 WHEN CONSTRAINT_ERROR =>
136 NULL;
137 WHEN OTHERS =>
138 FAILED ("OTHER EXCEPTION RAISED - 1");
139 END;
140
141 BEGIN
142 WW := (F => (DD => 1));
143 FAILED ("CONSTRAINT_ERROR NOT RAISED - 2");
144 IF REC5_EQUAL (WW,WW) THEN
145 COMMENT ("DON'T OPTIMIZE WW");
146 END IF;
147 EXCEPTION
148 WHEN CONSTRAINT_ERROR =>
149 NULL;
150 WHEN OTHERS =>
151 FAILED ("OTHER EXCEPTION RAISED - 2");
152 END;
153
154 BEGIN
155 XX := (D6 => 1, G => (D => 5));
156 FAILED ("CONSTRAINT_ERROR NOT RAISED - 3");
157 IF REC6_EQUAL (XX,XX) THEN
158 COMMENT ("DON'T OPTIMIZE XX");
159 END IF;
160 EXCEPTION
161 WHEN CONSTRAINT_ERROR =>
162 NULL;
163 WHEN OTHERS =>
164 FAILED ("OTHER EXCEPTION RAISED - 3");
165 END;
166 END P;
167
168 USE P;
169
170 FUNCTION REC1_EQUAL IS NEW GEN_EQUAL (REC1);
171 FUNCTION REC2_EQUAL IS NEW GEN_EQUAL (REC2);
172 FUNCTION REC3_EQUAL IS NEW GEN_EQUAL (REC3);
173 FUNCTION REC7_EQUAL IS NEW GEN_EQUAL (REC7);
174
175 BEGIN
176
177 BEGIN
178 V := (A => (D => 1, COMP1 => 2));
179 FAILED ("CONSTRAINT_ERROR NOT RAISED - 4");
180 IF REC1_EQUAL (V,V) THEN
181 COMMENT ("DON'T OPTIMIZE V");
182 END IF;
183 EXCEPTION
184 WHEN CONSTRAINT_ERROR =>
185 NULL;
186 WHEN OTHERS =>
187 FAILED ("OTHER EXCEPTION RAISED - 4");
188 END;
189
190 BEGIN
191 W := (B => (DD => 1, DCOMP1 => 2));
192 FAILED ("CONSTRAINT_ERROR NOT RAISED - 5");
193 IF REC2_EQUAL (W,W) THEN
194 COMMENT ("DON'T OPTIMIZE W");
195 END IF;
196 EXCEPTION
197 WHEN CONSTRAINT_ERROR =>
198 NULL;
199 WHEN OTHERS =>
200 FAILED ("OTHER EXCEPTION RAISED - 5");
201 END;
202
203 BEGIN
204 X := (D3 => 1, C => (D => 5, COMP1 => 2));
205 FAILED ("CONSTRAINT_ERROR NOT RAISED - 6");
206 IF REC3_EQUAL (X,X) THEN
207 COMMENT ("DON'T OPTIMIZE X");
208 END IF;
209 EXCEPTION
210 WHEN CONSTRAINT_ERROR =>
211 NULL;
212 WHEN OTHERS =>
213 FAILED ("OTHER EXCEPTION RAISED - 6");
214 END;
215
216 BEGIN
217 Y := (H => INIT (1));
218 FAILED ("CONSTRAINT_ERROR NOT RAISED - 7");
219 IF REC7_EQUAL (Y,Y) THEN
220 COMMENT ("DON'T OPTIMIZE Y");
221 END IF;
222 EXCEPTION
223 WHEN CONSTRAINT_ERROR =>
224 NULL;
225 WHEN OTHERS =>
226 FAILED ("OTHER EXCEPTION RAISED - 7");
227 END;
228
229 RESULT;
230 END C43004C;