annotate gcc/testsuite/ada/acats/tests/c4/c48006b.ada @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 -- C48006B.ADA
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 -- Grant of Unlimited Rights
kono
parents:
diff changeset
4 --
kono
parents:
diff changeset
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
kono
parents:
diff changeset
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
kono
parents:
diff changeset
7 -- unlimited rights in the software and documentation contained herein.
kono
parents:
diff changeset
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
kono
parents:
diff changeset
9 -- this public release, the Government intends to confer upon all
kono
parents:
diff changeset
10 -- recipients unlimited rights equal to those held by the Government.
kono
parents:
diff changeset
11 -- These rights include rights to use, duplicate, release or disclose the
kono
parents:
diff changeset
12 -- released technical data and computer software in whole or in part, in
kono
parents:
diff changeset
13 -- any manner and for any purpose whatsoever, and to have or permit others
kono
parents:
diff changeset
14 -- to do so.
kono
parents:
diff changeset
15 --
kono
parents:
diff changeset
16 -- DISCLAIMER
kono
parents:
diff changeset
17 --
kono
parents:
diff changeset
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
kono
parents:
diff changeset
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
kono
parents:
diff changeset
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
kono
parents:
diff changeset
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
kono
parents:
diff changeset
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
kono
parents:
diff changeset
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
kono
parents:
diff changeset
24 --*
kono
parents:
diff changeset
25 -- CHECK THAT AN ALLOCATOR OF THE FORM "NEW T'(X)" ALLOCATES A NEW
kono
parents:
diff changeset
26 -- OBJECT EACH TIME IT IS EXECUTED AND THAT IF T IS A RECORD, ARRAY, OR
kono
parents:
diff changeset
27 -- PRIVATE TYPE (CONSTRAINED OR UNCONSTRAINED), THE ALLOCATED OBJECT HAS
kono
parents:
diff changeset
28 -- THE VALUE OF (X).
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 -- RM 01/14/80
kono
parents:
diff changeset
31 -- RM 01/O1/82
kono
parents:
diff changeset
32 -- SPS 10/27/82
kono
parents:
diff changeset
33 -- EG 07/05/84
kono
parents:
diff changeset
34 -- JBG 11/08/85 AVOID CONFLICT WITH AI-7 OR AI-275
kono
parents:
diff changeset
35
kono
parents:
diff changeset
36 WITH REPORT;
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 PROCEDURE C48006B IS
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 USE REPORT ;
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 BEGIN
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 TEST("C48006B","CHECK THAT THE FORM 'NEW T'(X)' " &
kono
parents:
diff changeset
45 "ALLOCATES A NEW OBJECT " &
kono
parents:
diff changeset
46 "AND THAT IF T IS A RECORD, ARRAY, OR PRIVATE " &
kono
parents:
diff changeset
47 "TYPE, THE ALLOCATED OBJECT HAS THE VALUE (X)");
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 -- RECORD OR ARRAY TYPE (CONSTRAINED OR UNCONSTRAINED)
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 DECLARE
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 TYPE TB0( A , B : INTEGER ) IS
kono
parents:
diff changeset
54 RECORD
kono
parents:
diff changeset
55 C : INTEGER := 7 ;
kono
parents:
diff changeset
56 END RECORD;
kono
parents:
diff changeset
57 SUBTYPE TB IS TB0( 2 , 3 );
kono
parents:
diff changeset
58 TYPE ATB IS ACCESS TB ;
kono
parents:
diff changeset
59 TYPE ATB0 IS ACCESS TB0 ;
kono
parents:
diff changeset
60 VB1 , VB2 : ATB ;
kono
parents:
diff changeset
61 VB01 , VB02 : ATB0 ;
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 TYPE ARR0 IS ARRAY( INTEGER RANGE <> ) OF INTEGER ;
kono
parents:
diff changeset
64 SUBTYPE ARR IS ARR0( 1..4 );
kono
parents:
diff changeset
65 TYPE A_ARR IS ACCESS ARR ;
kono
parents:
diff changeset
66 TYPE A_ARR0 IS ACCESS ARR0 ;
kono
parents:
diff changeset
67 VARR1 , VARR2 : A_ARR ;
kono
parents:
diff changeset
68 VARR01 , VARR02 : A_ARR0 ;
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 BEGIN
kono
parents:
diff changeset
71
kono
parents:
diff changeset
72 VB1 := NEW TB'( 2 , 3 , 5 );
kono
parents:
diff changeset
73 IF ( VB1.A /=IDENT_INT( 2) OR
kono
parents:
diff changeset
74 VB1.B /=IDENT_INT( 3) OR
kono
parents:
diff changeset
75 VB1.C /=IDENT_INT( 5) )
kono
parents:
diff changeset
76 THEN FAILED( "WRONG VALUES - B1 1" );
kono
parents:
diff changeset
77 END IF;
kono
parents:
diff changeset
78
kono
parents:
diff changeset
79 VB2 := NEW TB'( IDENT_INT(2), IDENT_INT(3), IDENT_INT(6));
kono
parents:
diff changeset
80 IF ( VB2.A /= 2 OR
kono
parents:
diff changeset
81 VB2.B /= 3 OR
kono
parents:
diff changeset
82 VB2.C /= 6 OR
kono
parents:
diff changeset
83 VB1.A /= 2 OR
kono
parents:
diff changeset
84 VB1.B /= 3 OR
kono
parents:
diff changeset
85 VB1.C /= 5 )
kono
parents:
diff changeset
86 THEN FAILED( "WRONG VALUES - B1 2" );
kono
parents:
diff changeset
87 END IF;
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 VB01 := NEW TB0'( 1 , 2 , 3 );
kono
parents:
diff changeset
90 IF ( VB01.A /=IDENT_INT( 1) OR
kono
parents:
diff changeset
91 VB01.B /=IDENT_INT( 2) OR
kono
parents:
diff changeset
92 VB01.C /=IDENT_INT( 3) )
kono
parents:
diff changeset
93 THEN FAILED( "WRONG VALUES - B2 1" );
kono
parents:
diff changeset
94 END IF;
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 VB02 := NEW TB0'( IDENT_INT(4) , IDENT_INT(5) ,
kono
parents:
diff changeset
97 IDENT_INT(6) );
kono
parents:
diff changeset
98 IF ( VB02.A /=IDENT_INT( 4) OR
kono
parents:
diff changeset
99 VB02.B /=IDENT_INT( 5) OR
kono
parents:
diff changeset
100 VB02.C /=IDENT_INT( 6) OR
kono
parents:
diff changeset
101 VB01.A /=IDENT_INT( 1) OR
kono
parents:
diff changeset
102 VB01.B /=IDENT_INT( 2) OR
kono
parents:
diff changeset
103 VB01.C /=IDENT_INT( 3) )
kono
parents:
diff changeset
104 THEN FAILED( "WRONG VALUES - B2 2" );
kono
parents:
diff changeset
105 END IF;
kono
parents:
diff changeset
106
kono
parents:
diff changeset
107 VARR1 := NEW ARR'( 5 , 6 , 7 , 8 );
kono
parents:
diff changeset
108 IF ( VARR1(1) /=IDENT_INT( 5) OR
kono
parents:
diff changeset
109 VARR1(2) /=IDENT_INT( 6) OR
kono
parents:
diff changeset
110 VARR1(3) /=IDENT_INT( 7) OR
kono
parents:
diff changeset
111 VARR1(4) /=IDENT_INT( 8) )
kono
parents:
diff changeset
112 THEN FAILED( "WRONG VALUES - B3 1" );
kono
parents:
diff changeset
113 END IF ;
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 VARR2 := NEW ARR'( IDENT_INT(1) , IDENT_INT(2) , IDENT_INT(3),
kono
parents:
diff changeset
116 IDENT_INT(4) );
kono
parents:
diff changeset
117 IF ( VARR2(1) /= 1 OR
kono
parents:
diff changeset
118 VARR2(2) /= 2 OR
kono
parents:
diff changeset
119 VARR2(3) /= 3 OR
kono
parents:
diff changeset
120 VARR2(4) /= 4 OR
kono
parents:
diff changeset
121 VARR1(1) /= 5 OR
kono
parents:
diff changeset
122 VARR1(2) /= 6 OR
kono
parents:
diff changeset
123 VARR1(3) /= 7 OR
kono
parents:
diff changeset
124 VARR1(4) /= 8 )
kono
parents:
diff changeset
125 THEN FAILED( "WRONG VALUES - B3 2" );
kono
parents:
diff changeset
126 END IF ;
kono
parents:
diff changeset
127
kono
parents:
diff changeset
128 VARR01 := NEW ARR0'( 11 , 12 , 13 );
kono
parents:
diff changeset
129 IF ( VARR01(INTEGER'FIRST) /= IDENT_INT(11) OR
kono
parents:
diff changeset
130 VARR01(INTEGER'FIRST + 1) /= IDENT_INT(12) OR
kono
parents:
diff changeset
131 VARR01(INTEGER'FIRST + 2) /= IDENT_INT(13) )
kono
parents:
diff changeset
132 THEN FAILED( "WRONG VALUES - B4 1" );
kono
parents:
diff changeset
133 END IF ;
kono
parents:
diff changeset
134 IF ( VARR01.ALL'FIRST /= IDENT_INT( INTEGER'FIRST ) OR
kono
parents:
diff changeset
135 VARR01.ALL'LAST /= IDENT_INT( INTEGER'FIRST + 2 ) )
kono
parents:
diff changeset
136 THEN FAILED( "WRONG VALUES - B4 2" );
kono
parents:
diff changeset
137 END IF ;
kono
parents:
diff changeset
138
kono
parents:
diff changeset
139 VARR02 := NEW ARR0'( 1 => IDENT_INT(14) , 2 => IDENT_INT(15));
kono
parents:
diff changeset
140 IF ( VARR02(1) /= 14 OR
kono
parents:
diff changeset
141 VARR02(2) /= 15 OR
kono
parents:
diff changeset
142 VARR01(INTEGER'FIRST) /= 11 OR
kono
parents:
diff changeset
143 VARR01(INTEGER'FIRST + 1) /= 12 OR
kono
parents:
diff changeset
144 VARR01(INTEGER'FIRST + 2) /= 13 )
kono
parents:
diff changeset
145 THEN FAILED( "WRONG VALUES - B4 3" );
kono
parents:
diff changeset
146 END IF ;
kono
parents:
diff changeset
147
kono
parents:
diff changeset
148 END ;
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 -- PRIVATE TYPE (CONSTRAINED OR UNCONSTRAINED)
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 DECLARE
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 PACKAGE P IS
kono
parents:
diff changeset
155 TYPE UP(A, B : INTEGER) IS PRIVATE;
kono
parents:
diff changeset
156 -- SUBTYPE CP IS UP(1, 2);
kono
parents:
diff changeset
157 -- TYPE A_CP IS ACCESS CP;
kono
parents:
diff changeset
158 TYPE A_UP IS ACCESS UP;
kono
parents:
diff changeset
159 CONS1_UP : CONSTANT UP;
kono
parents:
diff changeset
160 CONS2_UP : CONSTANT UP;
kono
parents:
diff changeset
161 CONS3_UP : CONSTANT UP;
kono
parents:
diff changeset
162 CONS4_UP : CONSTANT UP;
kono
parents:
diff changeset
163 -- PROCEDURE CHECK1 (X : A_CP);
kono
parents:
diff changeset
164 -- PROCEDURE CHECK2 (X, Y : A_CP);
kono
parents:
diff changeset
165 PROCEDURE CHECK3 (X : A_UP);
kono
parents:
diff changeset
166 PROCEDURE CHECK4 (X, Y : A_UP);
kono
parents:
diff changeset
167 PRIVATE
kono
parents:
diff changeset
168 TYPE UP(A, B : INTEGER) IS
kono
parents:
diff changeset
169 RECORD
kono
parents:
diff changeset
170 C : INTEGER;
kono
parents:
diff changeset
171 END RECORD;
kono
parents:
diff changeset
172 CONS1_UP : CONSTANT UP := (1, 2, 3);
kono
parents:
diff changeset
173 CONS2_UP : CONSTANT UP := (IDENT_INT(1), IDENT_INT(2),
kono
parents:
diff changeset
174 IDENT_INT(4));
kono
parents:
diff changeset
175 CONS3_UP : CONSTANT UP := (7, 8, 9);
kono
parents:
diff changeset
176 CONS4_UP : CONSTANT UP := (IDENT_INT(10), IDENT_INT(11),
kono
parents:
diff changeset
177 IDENT_INT(12));
kono
parents:
diff changeset
178 END P;
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 USE P;
kono
parents:
diff changeset
181
kono
parents:
diff changeset
182 -- V_A_CP1, V_A_CP2 : A_CP;
kono
parents:
diff changeset
183 V_A_UP1, V_A_UP2 : A_UP;
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 PACKAGE BODY P IS
kono
parents:
diff changeset
186 -- PROCEDURE CHECK1 (X : A_CP) IS
kono
parents:
diff changeset
187 -- BEGIN
kono
parents:
diff changeset
188 -- IF (X.A /= IDENT_INT(1) OR
kono
parents:
diff changeset
189 -- X.B /= IDENT_INT(2) OR
kono
parents:
diff changeset
190 -- X.C /= IDENT_INT(3)) THEN
kono
parents:
diff changeset
191 -- FAILED ("WRONG VALUES - CP1");
kono
parents:
diff changeset
192 -- END IF;
kono
parents:
diff changeset
193 -- END CHECK1;
kono
parents:
diff changeset
194 -- PROCEDURE CHECK2 (X, Y : A_CP) IS
kono
parents:
diff changeset
195 -- BEGIN
kono
parents:
diff changeset
196 -- IF (X.A /= 1 OR X.B /= 2 OR X.C /= 3 OR
kono
parents:
diff changeset
197 -- Y.A /= 1 OR Y.B /= 2 OR Y.C /= 4) THEN
kono
parents:
diff changeset
198 -- FAILED ("WRONG VALUES - CP2");
kono
parents:
diff changeset
199 -- END IF;
kono
parents:
diff changeset
200 -- END CHECK2;
kono
parents:
diff changeset
201 PROCEDURE CHECK3 (X : A_UP) IS
kono
parents:
diff changeset
202 BEGIN
kono
parents:
diff changeset
203 IF (X.A /= IDENT_INT(7) OR
kono
parents:
diff changeset
204 X.B /= IDENT_INT(8) OR
kono
parents:
diff changeset
205 X.C /= IDENT_INT(9)) THEN
kono
parents:
diff changeset
206 FAILED ("WRONG VALUES - UP1");
kono
parents:
diff changeset
207 END IF;
kono
parents:
diff changeset
208 END CHECK3;
kono
parents:
diff changeset
209 PROCEDURE CHECK4 (X, Y : A_UP) IS
kono
parents:
diff changeset
210 BEGIN
kono
parents:
diff changeset
211 IF (X.A /= 7 OR X.B /= 8 OR X.C /= 9 OR
kono
parents:
diff changeset
212 Y.A /= 10 OR Y.B /= 11 OR Y.C /= 12) THEN
kono
parents:
diff changeset
213 FAILED ("WRONG VALUES - UP2");
kono
parents:
diff changeset
214 END IF;
kono
parents:
diff changeset
215 END CHECK4;
kono
parents:
diff changeset
216 END P;
kono
parents:
diff changeset
217
kono
parents:
diff changeset
218 BEGIN
kono
parents:
diff changeset
219
kono
parents:
diff changeset
220 -- V_A_CP1 := NEW CP'(CONS1_UP);
kono
parents:
diff changeset
221 -- CHECK1(V_A_CP1);
kono
parents:
diff changeset
222
kono
parents:
diff changeset
223 -- V_A_CP2 := NEW CP'(CONS2_UP);
kono
parents:
diff changeset
224 -- CHECK2(V_A_CP1, V_A_CP2);
kono
parents:
diff changeset
225
kono
parents:
diff changeset
226 V_A_UP1 := NEW P.UP'(CONS3_UP);
kono
parents:
diff changeset
227 CHECK3(V_A_UP1);
kono
parents:
diff changeset
228
kono
parents:
diff changeset
229 V_A_UP2 := NEW P.UP'(CONS4_UP);
kono
parents:
diff changeset
230 CHECK4(V_A_UP1, V_A_UP2);
kono
parents:
diff changeset
231
kono
parents:
diff changeset
232 END;
kono
parents:
diff changeset
233
kono
parents:
diff changeset
234 RESULT;
kono
parents:
diff changeset
235
kono
parents:
diff changeset
236 END C48006B;