-- 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;