blob: 6cfca9326d3fbd5fffe166835b85dd5c4af35aa4 [file] [log] [blame]
-- C83033A.ADA
-- Grant of Unlimited Rights
--
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- released technical data and computer software in whole or in part, in
-- any manner and for any purpose whatsoever, and to have or permit others
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT AN IMPLICIT DECLARATION OF A BLOCK NAME, A LOOP NAME,
-- OR A STATEMENT LABEL HIDES THE DECLARATION OF AN ENUMERATION
-- LITERAL OR OF A DERIVED SUBPROGRAM DECLARED BY A DERIVED TYPE
-- DEFINITION.
-- HISTORY:
-- DHH 09/21/88 CREATED ORIGINAL TEST.
-- WMC 03/25/92 REMOVED TEST REDUNDANCIES.
WITH REPORT; USE REPORT;
PROCEDURE C83033A IS
PACKAGE BASE_P IS
TYPE A IS (RED, BLUE, YELO);
FUNCTION RED(T : INTEGER; X : A) RETURN A;
FUNCTION BLUE(T : INTEGER; X : A) RETURN A;
END BASE_P;
PACKAGE BODY BASE_P IS
FUNCTION RED(T : INTEGER; X : A) RETURN A IS
BEGIN
IF EQUAL(T, T) THEN
RETURN X;
ELSE
RETURN YELO;
END IF;
END RED;
FUNCTION BLUE(T : INTEGER; X : A) RETURN A IS
BEGIN
IF EQUAL(T, T) THEN
RETURN X;
ELSE
RETURN YELO;
END IF;
END BLUE;
END BASE_P;
BEGIN
TEST ("C83033A", "CHECK THAT AN IMPLICIT DECLARATION OF A BLOCK " &
"NAME, A LOOP NAME, OR A STATEMENT LABEL HIDES " &
"THE DECLARATION OF AN ENUMERATION LITERAL OR " &
"OF A DERIVED SUBPROGRAM DECLARED BY A DERIVED " &
"TYPE DEFINITION");
B1:
DECLARE
TYPE STMT2 IS NEW BASE_P.A;
BEGIN
DECLARE
C, D : STMT2;
BEGIN
C := C83033A.B1.RED(3, C83033A.B1.RED);
D := C83033A.B1.RED;
GOTO RED; -- DEMONSTRATES USE OF STATEMENT LABEL.
FAILED("STATEMENT LABEL - 1");
<<RED>> IF C /= D THEN
FAILED("STATEMENT LABEL - 2");
END IF;
END;
END B1;
B2:
DECLARE
TYPE STMT2 IS NEW BASE_P.A;
BEGIN
DECLARE
A : STMT2 := BLUE;
B : STMT2 := BLUE(3, BLUE);
BEGIN
BLUE:
FOR I IN 1 .. 1 LOOP
IF A /= B THEN
FAILED("LOOP NAME - 1");
END IF;
EXIT BLUE; -- DEMONSTRATES USE OF LOOP LABEL.
FAILED("LOOP NAME - 2");
END LOOP BLUE;
END;
END B2;
B4:
DECLARE
PACKAGE P IS
GLOBAL : INTEGER := 1;
TYPE ENUM IS (GREEN, BLUE);
TYPE PRIV IS PRIVATE;
FUNCTION GREEN RETURN PRIV;
PRIVATE
TYPE PRIV IS NEW ENUM;
END P;
PACKAGE BODY P IS
FUNCTION GREEN RETURN PRIV IS
BEGIN
GLOBAL := GLOBAL + 1;
RETURN BLUE;
END GREEN;
BEGIN
NULL;
END P;
USE P;
BEGIN
GREEN:
DECLARE
COLOR : PRIV := C83033A.B4.P.GREEN;
BEGIN
IF GREEN.COLOR /= C83033A.B4.P.GREEN OR ELSE GLOBAL /= 3 THEN
FAILED("BLOCK NAME");
END IF;
END GREEN;
END B4;
RESULT;
END C83033A;