blob: ed421e9bcd4c9007d100a96d30a02148f37bfa3a [file] [log] [blame]
-- 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;