OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [ada/] [acats/] [tests/] [c8/] [c83030a.ada] - Blame information for rev 720

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 720 jeremybenn
-- C83030A.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 WITHIN A GENERIC SUBPROGRAM BODY, NO SUBPROGRAM
27
--     DECLARED IN AN OUTER DECLARATIVE REGION IS HIDDEN (UNLESS THE
28
--     SUBPROGRAM IS A HOMOGRAPH OF THE GENERIC SUBPROGRAM).
29
 
30
-- HISTORY:
31
--     TBN 08/03/88  CREATED ORIGINAL TEST.
32
 
33
WITH REPORT; USE REPORT;
34
PROCEDURE C83030A IS
35
 
36
     GLOBAL : INTEGER := IDENT_INT(INTEGER'FIRST);
37
     SWITCH1 : BOOLEAN := TRUE;
38
 
39
     PROCEDURE P IS
40
     BEGIN
41
          GLOBAL := IDENT_INT(1);
42
     END P;
43
 
44
     PROCEDURE P (X : INTEGER) IS
45
     BEGIN
46
          GLOBAL := IDENT_INT(X);
47
     END P;
48
 
49
BEGIN
50
     TEST ("C83030A", "CHECK THAT WITHIN A GENERIC SUBPROGRAM BODY, " &
51
                      "NO SUBPROGRAM DECLARED IN AN OUTER " &
52
                      "DECLARATIVE REGION IS HIDDEN " &
53
                      "(UNLESS THE SUBPROGRAM IS A HOMOGRAPH OF THE " &
54
                      "GENERIC SUBPROGRAM)");
55
 
56
     ONE:
57
     DECLARE
58
          GENERIC
59
          PROCEDURE P;
60
 
61
          PROCEDURE P IS
62
               A : INTEGER := IDENT_INT(2);
63
          BEGIN
64
               IF SWITCH1 THEN
65
                    SWITCH1 := FALSE;
66
                    P;
67
                    IF GLOBAL /= IDENT_INT(3) THEN
68
                         FAILED ("INCORRECT VALUE FOR PROCEDURE CALL " &
69
                                 "- 1");
70
                    END IF;
71
               END IF;
72
               P(A);
73
               IF GLOBAL /= IDENT_INT(2) THEN
74
                    FAILED ("INCORRECT VALUE FOR PROCEDURE CALL - 2");
75
               END IF;
76
               GLOBAL := IDENT_INT(3);
77
          END P;
78
 
79
          PROCEDURE NEW_P IS NEW P;
80
 
81
     BEGIN
82
          IF GLOBAL /= IDENT_INT(INTEGER'FIRST) THEN
83
               FAILED ("INCORRECT VALUE FOR START OF TEST ONE");
84
          END IF;
85
          NEW_P;
86
          IF GLOBAL /= IDENT_INT(3) THEN
87
               FAILED ("INCORRECT VALUE FOR END OF TEST ONE");
88
          END IF;
89
     END ONE;
90
 
91
 
92
     TWO:
93
     DECLARE
94
          GLOBAL : INTEGER := IDENT_INT(INTEGER'FIRST);
95
          SWITCH : BOOLEAN := TRUE;
96
 
97
          GENERIC
98
               TYPE T IS (<>);
99
          PROCEDURE P (X : T);
100
 
101
          PROCEDURE P (X : T) IS
102
               A : T := T'FIRST;
103
          BEGIN
104
               IF SWITCH THEN
105
                    SWITCH := FALSE;
106
                    P (X);
107
                    IF GLOBAL /= IDENT_INT(2) THEN
108
                         FAILED ("INCORRECT VALUE FOR PROCEDURE CALL " &
109
                                 "- 20");
110
                    END IF;
111
                    GLOBAL := IDENT_INT(3);
112
               ELSE
113
                    GLOBAL := IDENT_INT(2);
114
               END IF;
115
          END P;
116
 
117
          PROCEDURE NEW_P IS NEW P (INTEGER);
118
 
119
     BEGIN
120
          IF GLOBAL /= IDENT_INT(INTEGER'FIRST) THEN
121
               FAILED ("INCORRECT VALUE FOR START OF TEST TWO");
122
          END IF;
123
          NEW_P (1);
124
          IF GLOBAL /= IDENT_INT(3) THEN
125
               FAILED ("INCORRECT VALUE FOR END OF TEST TWO");
126
          END IF;
127
     END TWO;
128
 
129
 
130
     THREE:
131
     DECLARE
132
          SWITCH : BOOLEAN := TRUE;
133
 
134
          FUNCTION F RETURN INTEGER IS
135
          BEGIN
136
               RETURN IDENT_INT(1);
137
          END F;
138
 
139
          FUNCTION F RETURN BOOLEAN IS
140
          BEGIN
141
               RETURN IDENT_BOOL(FALSE);
142
          END F;
143
 
144
          FUNCTION F (X : INTEGER) RETURN INTEGER IS
145
          BEGIN
146
               RETURN IDENT_INT(X);
147
          END F;
148
 
149
     BEGIN
150
          DECLARE
151
               GENERIC
152
               FUNCTION F RETURN INTEGER;
153
 
154
               FUNCTION F RETURN INTEGER IS
155
                    A : INTEGER := INTEGER'LAST;
156
               BEGIN
157
                    IF SWITCH THEN
158
                         SWITCH := FALSE;
159
                         IF F /= IDENT_INT(3) THEN
160
                              FAILED ("INCORRECT VALUE FROM FUNCTION " &
161
                                      "CALL - 30");
162
                         END IF;
163
                    END IF;
164
                    IF F(A) /= IDENT_INT(INTEGER'LAST) THEN
165
                         FAILED ("INCORRECT VALUE FROM FUNCTION CALL " &
166
                                 "- 31");
167
                    END IF;
168
                    IF F THEN
169
                         FAILED ("INCORRECT VALUE FROM FUNCTION CALL " &
170
                                 "- 32");
171
                    END IF;
172
                    RETURN IDENT_INT(3);
173
               END F;
174
 
175
               FUNCTION NEW_F IS NEW F;
176
 
177
          BEGIN
178
               IF NEW_F /= IDENT_INT(3) THEN
179
                    FAILED ("INCORRECT VALUE FOR END OF TEST THREE");
180
               END IF;
181
          END;
182
     END THREE;
183
 
184
 
185
     FOUR:
186
     DECLARE
187
          SWITCH : BOOLEAN := TRUE;
188
 
189
          FUNCTION F RETURN INTEGER IS
190
          BEGIN
191
               RETURN IDENT_INT(1);
192
          END F;
193
 
194
          FUNCTION F RETURN BOOLEAN IS
195
          BEGIN
196
               RETURN IDENT_BOOL(FALSE);
197
          END F;
198
 
199
     BEGIN
200
          DECLARE
201
               GENERIC
202
                    TYPE T IS (<>);
203
               FUNCTION F RETURN T;
204
 
205
               FUNCTION F RETURN T IS
206
                    A : T := T'LAST;
207
               BEGIN
208
                    IF SWITCH THEN
209
                         SWITCH := FALSE;
210
                         IF F /= T'LAST THEN
211
                              FAILED ("INCORRECT VALUE FROM FUNCTION " &
212
                                      "CALL - 40");
213
                         END IF;
214
                         RETURN T'FIRST;
215
                    ELSE
216
                         IF F THEN
217
                              FAILED ("INCORRECT VALUE FROM FUNCTION " &
218
                                      "CALL - 41");
219
                         END IF;
220
                         RETURN T'LAST;
221
                    END IF;
222
               END F;
223
 
224
               FUNCTION NEW_F IS NEW F (INTEGER);
225
 
226
          BEGIN
227
               IF NEW_F /= IDENT_INT(INTEGER'FIRST) THEN
228
                    FAILED ("INCORRECT VALUE FOR END OF TEST FOUR");
229
               END IF;
230
          END;
231
     END FOUR;
232
 
233
     RESULT;
234
END C83030A;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.