-- C84002A.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: -- A) IF A USE CLAUSE NAMES AN ENCLOSING PACKAGE, THE USE CLAUSE -- HAS NO EFFECT. -- B) IF A DECLARATION IS DIRECTLY VISIBLE PRIOR TO THE OCCURRENCE -- OF A USE CLAUSE, AND IS NOT IN THE SET OF POTENTIALLY -- VISIBLE DECLARATIONS, IT REMAINS DIRECTLY VISIBLE AFTER THE -- USE CLAUSE. -- C) IF A HOMOGRAPH FOR A POTENTIALLY VISIBLE SUBPROGRAM OR -- OBJECT IS DECLARED AFTER A USE CLAUSE, THE POTENTIALLY -- VISIBLE ENTITY IS NO LONGER VISIBLE. -- EG 02/16/84 WITH REPORT; PROCEDURE C84002A IS USE REPORT; BEGIN TEST("C84002A","CHECK THAT DECLARATIONS DIRECTLY VISIBLE PRIOR " & "TO THE USE CLAUSE REMAIN VISIBLE AFTERWARDS"); BEGIN COMMENT ("CASE A : CHECK THAT IF A USE CLAUSE NAMES AN " & "ENCLOSING PACKAGE, THE USE CLAUSE HAS NO EFFECT"); CASE_A : DECLARE PACKAGE P1 IS X : FLOAT := 1.5; END P1; PACKAGE P2 IS X : INTEGER := 15; USE P1; USE P2; A : INTEGER := X; END P2; PACKAGE BODY P1 IS BEGIN NULL; END P1; PACKAGE BODY P2 IS BEGIN IF X /= IDENT_INT(15) OR X /= P2.X OR A /= P2.X THEN FAILED ("CASE A : USE CLAUSE HAS AN EFFECT"); END IF; END P2; BEGIN NULL; END CASE_A; COMMENT ("CASE B : CHECK THAT IF A DECLARATION IS DIRECTLY " & "VISIBLE PRIOR TO THE OCCURRENCE OF A USE CLAUSE, " & "AND IS NOT IN THE SET OF POTENTIALLY VISIBLE " & "DECLARATIONS, IT REMAINS DIRECTLY VISIBLE"); CASE_B : BEGIN CASE_B1 : DECLARE PACKAGE P1 IS Y : FLOAT := 1.5; END P1; PACKAGE P2 IS X : INTEGER := 15; USE P1; A : INTEGER := X; END P2; PACKAGE BODY P1 IS BEGIN NULL; END P1; PACKAGE BODY P2 IS BEGIN IF X /= IDENT_INT(15) OR X /= P2.X OR A /= P2.X THEN FAILED ("CASE B1 : DECLARATION NO " & "LONGER DIRECTLY VISIBLE"); END IF; END P2; BEGIN NULL; END CASE_B1; CASE_B2 : DECLARE PROCEDURE PROC1 (X : STRING) IS BEGIN NULL; END PROC1; PACKAGE P1 IS PROCEDURE PROC1 (X : STRING); END P1; PACKAGE BODY P1 IS PROCEDURE PROC1 (X : STRING) IS BEGIN FAILED ("CASE B2 : WRONG PROCEDURE " & "DIRECTLY VISIBLE"); END PROC1; END P1; USE P1; BEGIN PROC1 ("ABC"); END CASE_B2; CASE_B3 : DECLARE PROCEDURE PROC1 (X : STRING) IS BEGIN NULL; END PROC1; PACKAGE P1 IS PROCEDURE PROC1 (Y : STRING); END P1; PACKAGE BODY P1 IS PROCEDURE PROC1 (Y : STRING) IS BEGIN FAILED ("CASE B3 : WRONG PROCEDURE " & "DIRECTLY VISIBLE"); END PROC1; END P1; USE P1; BEGIN PROC1 ("ABC"); END CASE_B3; END CASE_B; COMMENT ("CASE C : IF A HOMOGRAPH FOR A POTENTIALLY " & "VISIBLE SUBPROGRAM OR OBJECT IS DECLARED AFTER " & "A USE CLAUSE, THE POTENTIALLY VISIBLE ENTITY " & "IS NO LONGER VISIBLE"); CASE_C : BEGIN CASE_C1 : DECLARE PACKAGE P1 IS PROCEDURE PROC1 (X : FLOAT); END P1; USE P1; PACKAGE BODY P1 IS PROCEDURE PROC1 (X : FLOAT) IS BEGIN IF X = -1.5 THEN FAILED ("CASE C1 : WRONG PROCEDURE" & " CALLED (A)"); ELSIF X /= 1.5 THEN FAILED ("CASE C1 : WRONG VALUE " & "PASSED (A)"); END IF; END PROC1; BEGIN NULL; END P1; PROCEDURE PROC2 IS BEGIN PROC1 (1.5); END PROC2; PROCEDURE PROC1 (X : FLOAT) IS BEGIN IF X = 1.5 THEN FAILED ("CASE C1 : WRONG PROCEDURE" & " CALLED (B)"); ELSIF X /= -1.5 THEN FAILED ("CASE C1 : WRONG VALUE " & "PASSED (B)"); END IF; END PROC1; BEGIN PROC2; PROC1 (-1.5); END CASE_C1; CASE_C2 : DECLARE PACKAGE P1 IS X : INTEGER := 15; END P1; USE P1; A : INTEGER := X; X : BOOLEAN := TRUE; B : BOOLEAN := X; BEGIN IF A /= IDENT_INT(15) THEN FAILED ("CASE C2 : VARIABLE A DOES NOT " & "CONTAIN THE CORRECT VALUE"); END IF; IF B /= IDENT_BOOL(TRUE) THEN FAILED ("CASE C2 : VARIABLE B DOES NOT " & "CONTAIN THE CORRECT VALUE"); END IF; END CASE_C2; END CASE_C; END; RESULT; END C84002A;