annotate gcc/testsuite/ada/acats/tests/cc/cc3601a.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 -- CC3601A.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 PREDEFINED OPERATORS MAY BE PASSED AS ACTUAL
kono
parents:
diff changeset
26 -- GENERIC SUBPROGRAM PARAMETERS (CHECKS FOR "=" AND "/=" ARE IN
kono
parents:
diff changeset
27 -- CC3601C).
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 -- R.WILLIAMS 10/9/86
kono
parents:
diff changeset
30 -- JRL 11/15/95 Added unknown discriminant part to all formal
kono
parents:
diff changeset
31 -- private types.
kono
parents:
diff changeset
32
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 WITH REPORT; USE REPORT;
kono
parents:
diff changeset
35 PROCEDURE CC3601A IS
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 GENERIC
kono
parents:
diff changeset
38 TYPE T (<>) IS PRIVATE;
kono
parents:
diff changeset
39 V, V1 : T;
kono
parents:
diff changeset
40 KIND : STRING;
kono
parents:
diff changeset
41 WITH FUNCTION F1 (X : IN T) RETURN T;
kono
parents:
diff changeset
42 PACKAGE GP1 IS
kono
parents:
diff changeset
43 R : BOOLEAN := F1 (V) = V1;
kono
parents:
diff changeset
44 END GP1;
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 PACKAGE BODY GP1 IS
kono
parents:
diff changeset
47 BEGIN
kono
parents:
diff changeset
48 IF NOT (IDENT_BOOL(R)) THEN
kono
parents:
diff changeset
49 FAILED ( "INCORRECT VALUE FOR UNARY OP - " & KIND);
kono
parents:
diff changeset
50 END IF;
kono
parents:
diff changeset
51 END GP1;
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 GENERIC
kono
parents:
diff changeset
54 TYPE T (<>) IS PRIVATE;
kono
parents:
diff changeset
55 V, V1, V2 : IN T;
kono
parents:
diff changeset
56 KIND : STRING;
kono
parents:
diff changeset
57 WITH FUNCTION F1 (P1 : IN T; P2 : IN T) RETURN T;
kono
parents:
diff changeset
58 PACKAGE GP2 IS
kono
parents:
diff changeset
59 R : BOOLEAN := V /= F1 (V1, V2);
kono
parents:
diff changeset
60 END GP2;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 PACKAGE BODY GP2 IS
kono
parents:
diff changeset
63 BEGIN
kono
parents:
diff changeset
64 IF IDENT_BOOL (R) THEN
kono
parents:
diff changeset
65 FAILED ( "INCORRECT VALUE FOR BINARY OP - " & KIND);
kono
parents:
diff changeset
66 END IF;
kono
parents:
diff changeset
67 END GP2;
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 GENERIC
kono
parents:
diff changeset
71 TYPE T1 (<>) IS PRIVATE;
kono
parents:
diff changeset
72 TYPE T2 (<>) IS PRIVATE;
kono
parents:
diff changeset
73 V1 : T1;
kono
parents:
diff changeset
74 V2 : T2;
kono
parents:
diff changeset
75 KIND : STRING;
kono
parents:
diff changeset
76 WITH FUNCTION F1 (X : IN T1) RETURN T2;
kono
parents:
diff changeset
77 PACKAGE GP3 IS
kono
parents:
diff changeset
78 R : BOOLEAN := F1 (V1) = V2;
kono
parents:
diff changeset
79 END GP3;
kono
parents:
diff changeset
80
kono
parents:
diff changeset
81 PACKAGE BODY GP3 IS
kono
parents:
diff changeset
82 BEGIN
kono
parents:
diff changeset
83 IF NOT (IDENT_BOOL(R)) THEN
kono
parents:
diff changeset
84 FAILED ( "INCORRECT VALUE FOR OP - " & KIND);
kono
parents:
diff changeset
85 END IF;
kono
parents:
diff changeset
86 END GP3;
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 BEGIN
kono
parents:
diff changeset
89 TEST ( "CC3601A", "CHECK THAT PREDEFINED OPERATORS MAY BE " &
kono
parents:
diff changeset
90 "PASSED AS ACTUAL GENERIC SUBPROGRAM " &
kono
parents:
diff changeset
91 "PARAMETERS" );
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93
kono
parents:
diff changeset
94 BEGIN -- CHECKS WITH RELATIONAL OPERATORS AND LOGICAL OPERATORS AS
kono
parents:
diff changeset
95 -- ACTUAL PARAMETERS.
kono
parents:
diff changeset
96
kono
parents:
diff changeset
97 FOR I1 IN BOOLEAN LOOP
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 FOR I2 IN BOOLEAN LOOP
kono
parents:
diff changeset
100 COMMENT ( "B1 = " & BOOLEAN'IMAGE (I1) & " AND " &
kono
parents:
diff changeset
101 "B2 = " & BOOLEAN'IMAGE (I2) );
kono
parents:
diff changeset
102 DECLARE
kono
parents:
diff changeset
103 B1 : BOOLEAN := IDENT_BOOL (I1);
kono
parents:
diff changeset
104 B2 : BOOLEAN := IDENT_BOOL (I2);
kono
parents:
diff changeset
105
kono
parents:
diff changeset
106 PACKAGE P1 IS
kono
parents:
diff changeset
107 NEW GP1 (BOOLEAN, NOT B2, B2,
kono
parents:
diff changeset
108 """NOT"" - 1", "NOT");
kono
parents:
diff changeset
109 PACKAGE P2 IS
kono
parents:
diff changeset
110 NEW GP2 (BOOLEAN, B1 OR B2, B1, B2,
kono
parents:
diff changeset
111 "OR", "OR");
kono
parents:
diff changeset
112 PACKAGE P3 IS
kono
parents:
diff changeset
113 NEW GP2 (BOOLEAN, B1 AND B2, B2, B1,
kono
parents:
diff changeset
114 "AND", "AND");
kono
parents:
diff changeset
115 PACKAGE P4 IS
kono
parents:
diff changeset
116 NEW GP2 (BOOLEAN, B1 /= B2, B1, B2,
kono
parents:
diff changeset
117 "XOR", "XOR");
kono
parents:
diff changeset
118 PACKAGE P5 IS
kono
parents:
diff changeset
119 NEW GP2 (BOOLEAN, B1 < B2, B1, B2,
kono
parents:
diff changeset
120 "<", "<");
kono
parents:
diff changeset
121 PACKAGE P6 IS
kono
parents:
diff changeset
122 NEW GP2 (BOOLEAN, B1 <= B2, B1, B2,
kono
parents:
diff changeset
123 "<=", "<=");
kono
parents:
diff changeset
124 PACKAGE P7 IS
kono
parents:
diff changeset
125 NEW GP2 (BOOLEAN, B1 > B2, B1, B2,
kono
parents:
diff changeset
126 ">", ">");
kono
parents:
diff changeset
127 PACKAGE P8 IS
kono
parents:
diff changeset
128 NEW GP2 (BOOLEAN, B1 >= B2, B1, B2,
kono
parents:
diff changeset
129 ">=", ">=");
kono
parents:
diff changeset
130
kono
parents:
diff changeset
131 TYPE AB IS ARRAY (BOOLEAN RANGE <> )
kono
parents:
diff changeset
132 OF BOOLEAN;
kono
parents:
diff changeset
133 AB1 : AB (BOOLEAN) := (B1, B2);
kono
parents:
diff changeset
134 AB2 : AB (BOOLEAN) := (B2, B1);
kono
parents:
diff changeset
135 T : AB (B1 .. B2) := (B1 .. B2 => TRUE);
kono
parents:
diff changeset
136 F : AB (B1 .. B2) := (B1 .. B2 => FALSE);
kono
parents:
diff changeset
137 VB1 : AB (B1 .. B1) := (B1 => B2);
kono
parents:
diff changeset
138 VB2 : AB (B2 .. B2) := (B2 => B1);
kono
parents:
diff changeset
139
kono
parents:
diff changeset
140 PACKAGE P9 IS
kono
parents:
diff changeset
141 NEW GP1 (AB, AB1, NOT AB1,
kono
parents:
diff changeset
142 """NOT"" - 2", "NOT");
kono
parents:
diff changeset
143 PACKAGE P10 IS
kono
parents:
diff changeset
144 NEW GP1 (AB, T, F,
kono
parents:
diff changeset
145 """NOT"" - 3", "NOT");
kono
parents:
diff changeset
146 PACKAGE P11 IS
kono
parents:
diff changeset
147 NEW GP1 (AB, VB2, (B2 => NOT B1),
kono
parents:
diff changeset
148 """NOT"" - 4", "NOT");
kono
parents:
diff changeset
149 PACKAGE P12 IS
kono
parents:
diff changeset
150 NEW GP2 (AB, AB1 AND AB2, AB1, AB2,
kono
parents:
diff changeset
151 "AND", "AND");
kono
parents:
diff changeset
152 BEGIN
kono
parents:
diff changeset
153 NULL;
kono
parents:
diff changeset
154 END;
kono
parents:
diff changeset
155 END LOOP;
kono
parents:
diff changeset
156 END LOOP;
kono
parents:
diff changeset
157 END;
kono
parents:
diff changeset
158
kono
parents:
diff changeset
159 DECLARE -- CHECKS WITH ADDING AND MULTIPLYING OPERATORS, "**",
kono
parents:
diff changeset
160 -- AND "ABS".
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162 PACKAGE P1 IS NEW GP1 (INTEGER, -4, -4, """+"" - 1", "+");
kono
parents:
diff changeset
163
kono
parents:
diff changeset
164 PACKAGE P2 IS NEW GP1 (FLOAT, 4.0, 4.0, """+"" - 2", "+");
kono
parents:
diff changeset
165
kono
parents:
diff changeset
166 PACKAGE P3 IS NEW GP1 (DURATION, -4.0, -4.0, """+"" - 3",
kono
parents:
diff changeset
167 "+");
kono
parents:
diff changeset
168 PACKAGE P4 IS NEW GP1 (INTEGER, -4, 4, """-"" - 1", "-");
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 PACKAGE P5 IS NEW GP1 (FLOAT, 0.0, 0.0, """-"" - 2", "-");
kono
parents:
diff changeset
171
kono
parents:
diff changeset
172 PACKAGE P6 IS NEW GP1 (DURATION, 1.0, -1.0, """-"" - 3",
kono
parents:
diff changeset
173 "-");
kono
parents:
diff changeset
174 PACKAGE P7 IS NEW GP2 (INTEGER, 6, 1, 5, """+"" - 1", "+");
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 PACKAGE P8 IS NEW GP2 (FLOAT, 6.0, 1.0, 5.0, """+"" - 2",
kono
parents:
diff changeset
177 "+");
kono
parents:
diff changeset
178 PACKAGE P9 IS NEW GP2 (DURATION, 6.0, 1.0, 5.0, """+"" - 3",
kono
parents:
diff changeset
179 "+");
kono
parents:
diff changeset
180 PACKAGE P10 IS NEW GP2 (INTEGER, 1, 6, 5, """-"" - 1",
kono
parents:
diff changeset
181 "-" );
kono
parents:
diff changeset
182 PACKAGE P11 IS NEW GP2 (DURATION, 11.0, 6.0,-5.0,
kono
parents:
diff changeset
183 """-"" - 2", "-");
kono
parents:
diff changeset
184 PACKAGE P12 IS NEW GP2 (FLOAT, 1.0, 6.0, 5.0, """-"" - 3",
kono
parents:
diff changeset
185 "-");
kono
parents:
diff changeset
186
kono
parents:
diff changeset
187 SUBTYPE SUBINT IS INTEGER RANGE 0 .. 2;
kono
parents:
diff changeset
188 TYPE STR IS ARRAY (SUBINT RANGE <>) OF CHARACTER;
kono
parents:
diff changeset
189 VSTR : STR (0 .. 1) := "AB";
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 PACKAGE P13 IS NEW GP2 (STR, VSTR (0 .. 0) &
kono
parents:
diff changeset
192 VSTR (1 .. 1),
kono
parents:
diff changeset
193 VSTR (0 .. 0),
kono
parents:
diff changeset
194 VSTR (1 .. 1), """&"" - 1", "&");
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 PACKAGE P14 IS NEW GP2 (STR, VSTR (1 .. 1) &
kono
parents:
diff changeset
197 VSTR (0 .. 0),
kono
parents:
diff changeset
198 VSTR (1 .. 1),
kono
parents:
diff changeset
199 VSTR (0 .. 0), """&"" - 2", "&");
kono
parents:
diff changeset
200
kono
parents:
diff changeset
201 PACKAGE P15 IS NEW GP2 (INTEGER, 0, -1, 0, """*"" - 1", "*");
kono
parents:
diff changeset
202
kono
parents:
diff changeset
203 PACKAGE P16 IS NEW GP2 (FLOAT, 6.0, 3.0, 2.0, """*"" - 2",
kono
parents:
diff changeset
204 "*");
kono
parents:
diff changeset
205 PACKAGE P17 IS NEW GP2 (INTEGER, 0, 0, 6, """/"" - 1", "/");
kono
parents:
diff changeset
206
kono
parents:
diff changeset
207 PACKAGE P18 IS NEW GP2 (FLOAT, 3.0, 6.0, 2.0, """/"" - 2",
kono
parents:
diff changeset
208 "/");
kono
parents:
diff changeset
209 PACKAGE P19 IS NEW GP2 (INTEGER, -1, -11, 5, "REM", "REM");
kono
parents:
diff changeset
210
kono
parents:
diff changeset
211 PACKAGE P20 IS NEW GP2 (INTEGER, 4, -11, 5, "MOD", "MOD");
kono
parents:
diff changeset
212
kono
parents:
diff changeset
213 PACKAGE P21 IS NEW GP1 (INTEGER, 5, 5, """ABS"" - 1", "ABS");
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 PACKAGE P22 IS NEW GP1 (FLOAT, -5.0, 5.0, """ABS"" - 2",
kono
parents:
diff changeset
216 "ABS");
kono
parents:
diff changeset
217
kono
parents:
diff changeset
218 PACKAGE P23 IS NEW GP1 (DURATION, 0.0, 0.0, """ABS"" - 3",
kono
parents:
diff changeset
219 "ABS");
kono
parents:
diff changeset
220
kono
parents:
diff changeset
221 PACKAGE P24 IS NEW GP2 (INTEGER, 9, 3, 2, """**"" - 1",
kono
parents:
diff changeset
222 "**");
kono
parents:
diff changeset
223
kono
parents:
diff changeset
224 PACKAGE P25 IS NEW GP2 (INTEGER, 1, 5, 0, """**"" - 2",
kono
parents:
diff changeset
225 "**");
kono
parents:
diff changeset
226
kono
parents:
diff changeset
227 BEGIN
kono
parents:
diff changeset
228 NULL;
kono
parents:
diff changeset
229 END;
kono
parents:
diff changeset
230
kono
parents:
diff changeset
231 DECLARE -- CHECKS WITH ATTRIBUTES.
kono
parents:
diff changeset
232
kono
parents:
diff changeset
233 TYPE WEEKDAY IS (MON, TUES, WED, THUR, FRI);
kono
parents:
diff changeset
234
kono
parents:
diff changeset
235 PACKAGE P1 IS NEW GP1 (WEEKDAY, TUES, WED, "WEEKDAY'SUCC",
kono
parents:
diff changeset
236 WEEKDAY'SUCC);
kono
parents:
diff changeset
237
kono
parents:
diff changeset
238 PACKAGE P2 IS NEW GP1 (WEEKDAY, TUES, MON, "WEEKDAY'PRED",
kono
parents:
diff changeset
239 WEEKDAY'PRED);
kono
parents:
diff changeset
240
kono
parents:
diff changeset
241 PACKAGE P3 IS NEW GP3 (WEEKDAY, STRING, THUR, "THUR",
kono
parents:
diff changeset
242 "WEEKDAY'IMAGE", WEEKDAY'IMAGE);
kono
parents:
diff changeset
243
kono
parents:
diff changeset
244 PACKAGE P4 IS NEW GP3 (STRING, WEEKDAY, "FRI", FRI,
kono
parents:
diff changeset
245 "WEEKDAY'VALUE", WEEKDAY'VALUE);
kono
parents:
diff changeset
246 BEGIN
kono
parents:
diff changeset
247 NULL;
kono
parents:
diff changeset
248 END;
kono
parents:
diff changeset
249
kono
parents:
diff changeset
250 RESULT;
kono
parents:
diff changeset
251 END CC3601A;