2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / ada / acats / tests / a / a83a08a.ada
blob5cdc30ecd9b22ca089f225dae24331a1270e8cec
1 -- A83A08A.ADA
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.
16 -- DISCLAIMER
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 -- A STATEMENT LABEL DECLARED OUTSIDE A BLOCK CAN HAVE THE SAME
27 -- IDENTIFIER AS AN ENTITY DECLARED IN THE BLOCK, AND A GOTO
28 -- STATEMENT USING THE LABEL IS LEGAL OUTSIDE THE BLOCK.
30 -- HISTORY:
31 -- PMW 09/20/88 CREATED ORIGINAL TEST.
33 WITH REPORT; USE REPORT;
34 WITH SYSTEM;
36 PROCEDURE A83A08A IS
38 PASSES : INTEGER := 0;
40 BEGIN
41 TEST ("A83A08A", "A STATEMENT LABEL DECLARED OUTSIDE A BLOCK " &
42 "CAN HAVE THE SAME IDENTIFIER AS AN ENTITY " &
43 "DECLARED IN THE BLOCK, AND A GOTO STATEMENT " &
44 "USING THE LABEL IS LEGAL OUTSIDE THE BLOCK");
46 GOTO LBLS;
48 <<LBL>>
50 DECLARE
51 LBL : INTEGER := 1;
52 BEGIN
53 LBL := IDENT_INT (LBL);
54 PASSES := PASSES + 1;
55 END;
57 <<LBLS>>
59 BEGIN
60 DECLARE
61 TYPE STUFF IS (LBL, LBL_ONE, LBL_TWO);
62 ITEM : STUFF := LBL;
64 FUNCTION LBLS (ITEM : STUFF) RETURN BOOLEAN IS
65 BEGIN
66 <<LBL_2>>
67 CASE ITEM IS
68 WHEN LBL => RETURN TRUE;
69 WHEN LBL_ONE => PASSES := PASSES + 1;
70 WHEN LBL_TWO => RETURN FALSE;
71 END CASE;
72 IF PASSES < 2 THEN
73 PASSES := PASSES + 1;
74 GOTO LBL_2;
75 ELSE
76 RETURN TRUE;
77 END IF;
78 END LBLS;
80 BEGIN
81 CASE PASSES IS
82 WHEN 0 => ITEM := LBL;
83 WHEN 1 => ITEM := LBL_ONE;
84 WHEN OTHERS => ITEM := LBL_TWO;
85 END CASE;
86 IF NOT LBLS (ITEM) THEN
87 COMMENT ("IRRELEVANT");
88 END IF;
89 END;
90 END;
93 IF PASSES > 1 THEN
94 GOTO ENOUGH;
95 END IF;
96 GOTO LBL;
98 <<ENOUGH>>
100 RESULT;
102 END A83A08A;