-- CC1308A.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 FORMAL SUBPROGRAM PARAMETERS MAY OVERLOAD EACH OTHER -- AND OTHER VISIBLE SUBPROGRAMS AND ENUMERATION LITERALS WITHIN AND -- OUTSIDE OF THE GENERIC UNIT. -- HISTORY: -- DAT 09/08/81 CREATED ORIGINAL TEST. -- SPS 10/26/82 -- SPS 02/09/83 -- BCB 08/09/88 REPLACED THE OLD TEST WITH A VERSION BASED ON -- AIG 6.6/T2. WITH REPORT; USE REPORT; PROCEDURE CC1308A IS TYPE ENUM IS (F1,F2,F3,F4,F5,F6,F7); FUNCTION F1 (X : INTEGER) RETURN INTEGER IS BEGIN RETURN 2*X; END F1; PROCEDURE F1 (X : IN OUT INTEGER) IS BEGIN X := 3*X; END F1; PROCEDURE F2 (Y : IN OUT INTEGER; Z : IN OUT BOOLEAN) IS BEGIN Y := 2*Y; Z := NOT Z; END F2; PROCEDURE F2 (Y : IN OUT INTEGER) IS BEGIN Y := 3*Y; END F2; PROCEDURE F3 (B : BOOLEAN := FALSE; A : IN OUT INTEGER) IS BEGIN A := 2*A; END F3; PROCEDURE F3 (A : IN OUT INTEGER) IS BEGIN A := 3*A; END F3; PROCEDURE F4 (C : IN OUT INTEGER) IS BEGIN C := 2*C; END F4; PROCEDURE F4 (C : IN OUT BOOLEAN) IS BEGIN C := NOT C; END F4; PROCEDURE F5 (D : IN OUT INTEGER; E : IN OUT BOOLEAN) IS BEGIN D := 2*D; E := NOT E; END F5; PROCEDURE F5 (E : IN OUT BOOLEAN; D : IN OUT INTEGER) IS BEGIN E := NOT E; D := 3*D; END F5; FUNCTION F6 (G : INTEGER) RETURN INTEGER IS BEGIN RETURN 2*G; END F6; FUNCTION F6 (G : INTEGER) RETURN BOOLEAN IS BEGIN RETURN TRUE; END F6; FUNCTION F7 RETURN INTEGER IS BEGIN RETURN 25; END F7; FUNCTION F7 RETURN BOOLEAN IS BEGIN RETURN FALSE; END F7; BEGIN TEST ("CC1308A", "CHECK THAT FORMAL SUBPROGRAM PARAMETERS MAY " & "OVERLOAD EACH OTHER AND OTHER VISIBLE " & "SUBPROGRAMS AND ENUMERATION LITERALS WITHIN " & "AND OUTSIDE OF THE GENERIC UNIT"); DECLARE GENERIC WITH FUNCTION F1 (X : INTEGER) RETURN INTEGER; WITH PROCEDURE F1 (X : IN OUT INTEGER); WITH PROCEDURE F2 (Y : IN OUT INTEGER; Z : IN OUT BOOLEAN); WITH PROCEDURE F2 (Y : IN OUT INTEGER); WITH PROCEDURE F3 (B : BOOLEAN := FALSE; A : IN OUT INTEGER); WITH PROCEDURE F3 (A : IN OUT INTEGER); WITH PROCEDURE F4 (C : IN OUT INTEGER); WITH PROCEDURE F4 (C : IN OUT BOOLEAN); WITH PROCEDURE F5 (D : IN OUT INTEGER; E : IN OUT BOOLEAN); WITH PROCEDURE F5 (E : IN OUT BOOLEAN; D : IN OUT INTEGER); WITH FUNCTION F6 (G : INTEGER) RETURN INTEGER; WITH FUNCTION F6 (G : INTEGER) RETURN BOOLEAN; WITH FUNCTION F7 RETURN INTEGER; WITH FUNCTION F7 RETURN BOOLEAN; PACKAGE P IS TYPE EN IS (F1,F2,F3,F4,F5,F6,F7); END P; PACKAGE BODY P IS X1, X2, Y1, Y2, A1, A2, C1, D1, D2, G1 : INTEGER := IDENT_INT(5); VAL : INTEGER := IDENT_INT(0); Z1, B1, C2, E1, E2, BOOL : BOOLEAN := IDENT_BOOL(FALSE); BEGIN VAL := F1(X1); IF NOT EQUAL(VAL,10) THEN FAILED ("CASE 1 - WRONG VALUE RETURNED FROM " & "FUNCTION"); END IF; F1(X2); IF NOT EQUAL(X2,15) THEN FAILED ("CASE 1 - WRONG VALUE ASSIGNED INSIDE " & "PROCEDURE"); END IF; F2(Y1,Z1); IF NOT EQUAL(Y1,10) OR Z1 /= TRUE THEN FAILED ("CASE 2 - WRONG VALUES ASSIGNED INSIDE " & "PROCEDURE"); END IF; F2(Y2); IF NOT EQUAL(Y2,15) THEN FAILED ("CASE 2 - WRONG VALUE ASSIGNED INSIDE " & "PROCEDURE"); END IF; F3(B1,A1); IF NOT EQUAL(A1,10) OR B1 /= FALSE THEN FAILED ("CASE 3 - WRONG VALUES ASSIGNED INSIDE " & "PROCEDURE"); END IF; F3(A2); IF NOT EQUAL(A2,15) THEN FAILED ("CASE 3 - WRONG VALUE ASSIGNED INSIDE " & "PROCEDURE"); END IF; F4(C1); IF NOT EQUAL(C1,10) THEN FAILED ("CASE 4 - WRONG VALUE ASSIGNED INSIDE " & "PROCEDURE - BASE TYPE INTEGER"); END IF; F4(C2); IF C2 /= TRUE THEN FAILED ("CASE 4 - WRONG VALUE ASSIGNED INSIDE " & "PROCEDURE - BASE TYPE BOOLEAN"); END IF; F5(D1,E1); IF NOT EQUAL(D1,10) OR E1 /= TRUE THEN FAILED ("CASE 5 - WRONG VALUES ASSIGNED INSIDE " & "PROCEDURE - ORDER WAS INTEGER, BOOLEAN"); END IF; F5(E2,D2); IF E2 /= TRUE OR NOT EQUAL(D2,15) THEN FAILED ("CASE 5 - WRONG VALUES ASSIGNED INSIDE " & "PROCEDURE - ORDER WAS BOOLEAN, INTEGER"); END IF; VAL := F6(G1); IF NOT EQUAL(VAL,10) THEN FAILED ("CASE 6 - WRONG VALUE RETURNED FROM " & "FUNCTION - TYPE INTEGER"); END IF; BOOL := F6(G1); IF BOOL /= TRUE THEN FAILED ("CASE 6 - WRONG VALUE RETURNED FROM " & "FUNCTION - TYPE BOOLEAN"); END IF; VAL := F7; IF NOT EQUAL(VAL,25) THEN FAILED ("CASE 7 - WRONG VALUE RETURNED FROM " & "PARAMETERLESS FUNCTION - TYPE INTEGER"); END IF; BOOL := F7; IF BOOL /= FALSE THEN FAILED ("CASE 7 - WRONG VALUE RETURNED FROM " & "PARAMETERLESS FUNCTION - TYPE BOOLEAN"); END IF; END P; PACKAGE NEW_P IS NEW P (F1, F1, F2, F2, F3, F3, F4, F4, F5, F5, F6, F6, F7, F7); BEGIN NULL; END; RESULT; END CC1308A;