blob: 917f5fd450fc02a57de6ffa1d326c6e496b0bf51 [file] [log] [blame]
-- CC3123A.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.
--*
-- CHECK THAT DEFAULT EXPRESSIONS FOR GENERIC IN PARAMETERS ARE ONLY
-- EVALUATED IF THERE ARE NO ACTUAL PARAMETERS.
-- TBN 12/01/86
WITH REPORT; USE REPORT;
PROCEDURE CC3123A IS
BEGIN
TEST ("CC3123A", "CHECK THAT DEFAULT EXPRESSIONS FOR GENERIC IN " &
"PARAMETERS ARE ONLY EVALUATED IF THERE ARE " &
"NO ACTUAL PARAMETERS");
DECLARE
TYPE ENUM IS (I, II, III);
OBJ_INT : INTEGER := 1;
OBJ_ENUM : ENUM := I;
GENERIC
GEN_INT : IN INTEGER := IDENT_INT(2);
GEN_BOOL : IN BOOLEAN := IDENT_BOOL(FALSE);
GEN_ENUM : IN ENUM := II;
PACKAGE P IS
PAC_INT : INTEGER := GEN_INT;
PAC_BOOL : BOOLEAN := GEN_BOOL;
PAC_ENUM : ENUM := GEN_ENUM;
END P;
PACKAGE P1 IS NEW P;
PACKAGE P2 IS
NEW P (IDENT_INT(OBJ_INT), GEN_ENUM => OBJ_ENUM);
PACKAGE P3 IS NEW P (GEN_BOOL => IDENT_BOOL(TRUE));
BEGIN
IF P1.PAC_INT /= 2 OR P1.PAC_BOOL OR P1.PAC_ENUM /= II THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED");
END IF;
IF P2.PAC_INT /= 1 OR P2.PAC_BOOL OR P2.PAC_ENUM /= I THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED CORRECTLY " &
"- 1");
END IF;
IF P3.PAC_INT /= 2 OR NOT(P3.PAC_BOOL) OR
P3.PAC_ENUM /= II THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED CORRECTLY " &
"- 2");
END IF;
END;
-------------------------------------------------------------------
DECLARE
OBJ_INT1 : INTEGER := 3;
FUNCTION FUNC (X : INTEGER) RETURN INTEGER;
GENERIC
GEN_INT1 : IN INTEGER := FUNC (1);
GEN_INT2 : IN INTEGER := FUNC (GEN_INT1 + 1);
PROCEDURE PROC;
PROCEDURE PROC IS
PROC_INT1 : INTEGER := GEN_INT1;
PROC_INT2 : INTEGER := GEN_INT2;
BEGIN
IF PROC_INT1 /= 3 THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED " &
"CORRECTLY - 3");
END IF;
IF PROC_INT2 /= 4 THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED " &
"CORRECTLY - 4");
END IF;
END PROC;
FUNCTION FUNC (X : INTEGER) RETURN INTEGER IS
BEGIN
IF X /= IDENT_INT(4) THEN
FAILED ("DEFAULT VALUES WERE NOT EVALUATED " &
"CORRECTLY - 5");
END IF;
RETURN IDENT_INT(X);
END FUNC;
PROCEDURE NEW_PROC IS NEW PROC (GEN_INT1 => OBJ_INT1);
BEGIN
NEW_PROC;
END;
-------------------------------------------------------------------
DECLARE
TYPE ARA_TYP IS ARRAY (1 .. 2) OF INTEGER;
TYPE REC IS
RECORD
ANS : BOOLEAN;
ARA : ARA_TYP;
END RECORD;
TYPE ARA_REC IS ARRAY (1 .. 5) OF REC;
FUNCTION F (X : INTEGER) RETURN INTEGER;
OBJ_REC : REC := (FALSE, (3, 4));
OBJ_ARA : ARA_REC := (1 .. 5 => (FALSE, (3, 4)));
GENERIC
GEN_OBJ1 : IN ARA_TYP := (F(1), 2);
GEN_OBJ2 : IN REC := (TRUE, GEN_OBJ1);
GEN_OBJ3 : IN ARA_REC := (1 .. F(5) => (TRUE, (1, 2)));
FUNCTION FUNC RETURN INTEGER;
FUNCTION FUNC RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(1);
END FUNC;
FUNCTION F (X : INTEGER) RETURN INTEGER IS
BEGIN
FAILED ("DEFAULT VALUES WERE EVALUATED - 1");
RETURN IDENT_INT(X);
END F;
FUNCTION NEW_FUNC IS NEW FUNC ((3, 4), OBJ_REC, OBJ_ARA);
BEGIN
IF NOT EQUAL (NEW_FUNC, 1) THEN
FAILED ("INCORRECT RESULT FROM GENERIC FUNCTION - 1");
END IF;
END;
-------------------------------------------------------------------
DECLARE
SUBTYPE INT IS INTEGER RANGE 1 .. 5;
TYPE ARA_TYP IS ARRAY (1 .. 2) OF INTEGER;
TYPE COLOR IS (RED, WHITE);
TYPE CON_REC (D : INT) IS
RECORD
A : COLOR;
B : ARA_TYP;
END RECORD;
TYPE UNCON_OR_CON_REC (D : INT := 2) IS
RECORD
A : COLOR;
B : ARA_TYP;
END RECORD;
FUNCTION F (X : COLOR) RETURN COLOR;
OBJ_CON1 : CON_REC (1) := (1, WHITE, (3, 4));
OBJ_UNCON : UNCON_OR_CON_REC := (2, WHITE, (3, 4));
OBJ_CON2 : UNCON_OR_CON_REC (3) := (3, WHITE, (3, 4));
GENERIC
GEN_CON1 : IN CON_REC := (2, F(RED), (1, 2));
GEN_UNCON : IN UNCON_OR_CON_REC := (2, F(RED), (1, 2));
GEN_CON2 : IN UNCON_OR_CON_REC := GEN_UNCON;
FUNCTION FUNC RETURN INTEGER;
FUNCTION FUNC RETURN INTEGER IS
BEGIN
RETURN IDENT_INT(1);
END FUNC;
FUNCTION F (X : COLOR) RETURN COLOR IS
BEGIN
FAILED ("DEFAULT VALUES WERE EVALUATED - 2");
RETURN WHITE;
END F;
FUNCTION NEW_FUNC IS NEW FUNC (OBJ_CON1, OBJ_UNCON, OBJ_CON2);
BEGIN
IF NOT EQUAL (NEW_FUNC, 1) THEN
FAILED ("INCORRECT RESULT FROM GENERIC FUNCTION - 2");
END IF;
END;
RESULT;
END CC3123A;