-- C74211A.ADA
|
-- C74211A.ADA
|
|
|
-- Grant of Unlimited Rights
|
-- Grant of Unlimited Rights
|
--
|
--
|
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
|
-- 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
|
-- 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 in the software and documentation contained herein.
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- this public release, the Government intends to confer upon all
|
-- this public release, the Government intends to confer upon all
|
-- recipients unlimited rights equal to those held by the Government.
|
-- recipients unlimited rights equal to those held by the Government.
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- released technical data and computer software in whole or in part, in
|
-- 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
|
-- any manner and for any purpose whatsoever, and to have or permit others
|
-- to do so.
|
-- to do so.
|
--
|
--
|
-- DISCLAIMER
|
-- DISCLAIMER
|
--
|
--
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
--*
|
--*
|
-- CHECK THAT WITHIN THE PACKAGE SPECIFICATION AND BODY, ANY EXPLICIT
|
-- CHECK THAT WITHIN THE PACKAGE SPECIFICATION AND BODY, ANY EXPLICIT
|
-- DECLARATIONS OF OPERATORS AND SUBPROGRAMS HIDE ANY OPERATIONS WHICH
|
-- DECLARATIONS OF OPERATORS AND SUBPROGRAMS HIDE ANY OPERATIONS WHICH
|
-- ARE IMPLICITLY DECLARED AT THE POINT OF THE FULL DECLARATION,
|
-- ARE IMPLICITLY DECLARED AT THE POINT OF THE FULL DECLARATION,
|
-- REGARDLESS OF THE ORDER OF OCCURENCE OF THE DECLARATIONS.
|
-- REGARDLESS OF THE ORDER OF OCCURENCE OF THE DECLARATIONS.
|
|
|
-- CHECK THAT IMPLICITLY DECLARED DERIVED SUBPROGRAMS HIDE IMPLICITLY
|
-- CHECK THAT IMPLICITLY DECLARED DERIVED SUBPROGRAMS HIDE IMPLICITLY
|
-- DECLARED PREDEFINED OPERATORS, REGARDLESS OF THE ORDER OF OCCURENCE
|
-- DECLARED PREDEFINED OPERATORS, REGARDLESS OF THE ORDER OF OCCURENCE
|
-- OF THE DECLARATIONS.
|
-- OF THE DECLARATIONS.
|
|
|
-- DSJ 4/28/83
|
-- DSJ 4/28/83
|
-- JBG 9/23/83
|
-- JBG 9/23/83
|
|
|
-- A) EXPLICIT DECLARATION HIDES LATER IMPLICIT DECL OF PREDEFINED OP.
|
-- A) EXPLICIT DECLARATION HIDES LATER IMPLICIT DECL OF PREDEFINED OP.
|
-- B) " " " LATER " " " DERIVED OP.
|
-- B) " " " LATER " " " DERIVED OP.
|
-- C) " " " EARLIER " " " PREDEFINED OP.
|
-- C) " " " EARLIER " " " PREDEFINED OP.
|
-- D) " " " EARLIER " " " DERIVED OP.
|
-- D) " " " EARLIER " " " DERIVED OP.
|
|
|
WITH REPORT;
|
WITH REPORT;
|
PROCEDURE C74211A IS
|
PROCEDURE C74211A IS
|
|
|
USE REPORT;
|
USE REPORT;
|
|
|
BEGIN
|
BEGIN
|
|
|
TEST ("C74211A", "CHECK THAT HIDING OF IMPLICITLY DECLARED " &
|
TEST ("C74211A", "CHECK THAT HIDING OF IMPLICITLY DECLARED " &
|
"OPERATORS AND DERIVED SUBPROGRAMS IS DONE " &
|
"OPERATORS AND DERIVED SUBPROGRAMS IS DONE " &
|
"CORRECTLY REGARDLESS OF ORDER OF DECL'S");
|
"CORRECTLY REGARDLESS OF ORDER OF DECL'S");
|
|
|
DECLARE
|
DECLARE
|
|
|
PACKAGE P1 IS
|
PACKAGE P1 IS
|
TYPE T1 IS RANGE 1 .. 50;
|
TYPE T1 IS RANGE 1 .. 50;
|
C1 : CONSTANT T1 := T1(IDENT_INT(2));
|
C1 : CONSTANT T1 := T1(IDENT_INT(2));
|
D1 : CONSTANT T1 := C1 + C1; -- PREDEFINED "+"
|
D1 : CONSTANT T1 := C1 + C1; -- PREDEFINED "+"
|
FUNCTION "+" (L, R : T1) RETURN T1; -- C) FOR "+".
|
FUNCTION "+" (L, R : T1) RETURN T1; -- C) FOR "+".
|
FUNCTION "-" (L, R : T1) RETURN T1; -- C) FOR "-".
|
FUNCTION "-" (L, R : T1) RETURN T1; -- C) FOR "-".
|
FUNCTION "/" (L, R : T1) RETURN T1;
|
FUNCTION "/" (L, R : T1) RETURN T1;
|
END P1;
|
END P1;
|
|
|
USE P1;
|
USE P1;
|
|
|
PACKAGE BODY P1 IS
|
PACKAGE BODY P1 IS
|
A,B : T1 := 3;
|
A,B : T1 := 3;
|
|
|
FUNCTION "+" (L, R : T1) RETURN T1 IS
|
FUNCTION "+" (L, R : T1) RETURN T1 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN 1;
|
RETURN 1;
|
ELSE RETURN 2;
|
ELSE RETURN 2;
|
END IF;
|
END IF;
|
END "+";
|
END "+";
|
|
|
FUNCTION "-" (L, R : T1) RETURN T1 IS
|
FUNCTION "-" (L, R : T1) RETURN T1 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN 3;
|
RETURN 3;
|
ELSE RETURN 4;
|
ELSE RETURN 4;
|
END IF;
|
END IF;
|
END "-";
|
END "-";
|
|
|
FUNCTION "/" (L, R : T1) RETURN T1 IS
|
FUNCTION "/" (L, R : T1) RETURN T1 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN T1(IDENT_INT(INTEGER(L)));
|
RETURN T1(IDENT_INT(INTEGER(L)));
|
ELSE
|
ELSE
|
RETURN T1(IDENT_INT(50));
|
RETURN T1(IDENT_INT(50));
|
END IF;
|
END IF;
|
END "/";
|
END "/";
|
|
|
BEGIN
|
BEGIN
|
IF D1 /= 4 THEN
|
IF D1 /= 4 THEN
|
FAILED ("WRONG PREDEFINED OPERATION - '+' ");
|
FAILED ("WRONG PREDEFINED OPERATION - '+' ");
|
END IF;
|
END IF;
|
|
|
IF D1 + C1 /= 2 THEN
|
IF D1 + C1 /= 2 THEN
|
FAILED ("IMPLICIT '+' NOT HIDDEN BY EXPLICIT '+'");
|
FAILED ("IMPLICIT '+' NOT HIDDEN BY EXPLICIT '+'");
|
END IF;
|
END IF;
|
|
|
IF A + B /= 1 THEN
|
IF A + B /= 1 THEN
|
FAILED ("IMPLICIT DECLARATION NOT HIDDEN " &
|
FAILED ("IMPLICIT DECLARATION NOT HIDDEN " &
|
"BY EXPLICIT DECLARATION - '+' ");
|
"BY EXPLICIT DECLARATION - '+' ");
|
END IF;
|
END IF;
|
|
|
IF A - B /= 3 THEN
|
IF A - B /= 3 THEN
|
FAILED ("IMPLICIT DECLARATION NOT HIDDEN " &
|
FAILED ("IMPLICIT DECLARATION NOT HIDDEN " &
|
"BY EXPLICIT DECLARATION - '-' ");
|
"BY EXPLICIT DECLARATION - '-' ");
|
END IF;
|
END IF;
|
|
|
IF A * B /= 9 THEN
|
IF A * B /= 9 THEN
|
FAILED ("WRONG PREDEFINED OPERATION - '*' ");
|
FAILED ("WRONG PREDEFINED OPERATION - '*' ");
|
END IF;
|
END IF;
|
|
|
IF B / A /= T1(IDENT_INT(3)) THEN
|
IF B / A /= T1(IDENT_INT(3)) THEN
|
FAILED ("NOT REDEFINED '/' ");
|
FAILED ("NOT REDEFINED '/' ");
|
END IF;
|
END IF;
|
END P1;
|
END P1;
|
|
|
PACKAGE P2 IS
|
PACKAGE P2 IS
|
TYPE T2 IS PRIVATE;
|
TYPE T2 IS PRIVATE;
|
X , Y : CONSTANT T2;
|
X , Y : CONSTANT T2;
|
FUNCTION "+" (L, R : T2) RETURN T2; -- B)
|
FUNCTION "+" (L, R : T2) RETURN T2; -- B)
|
FUNCTION "*" (L, R : T2) RETURN T2; -- A)
|
FUNCTION "*" (L, R : T2) RETURN T2; -- A)
|
PRIVATE
|
PRIVATE
|
TYPE T2 IS NEW T1; -- B) +; A) *
|
TYPE T2 IS NEW T1; -- B) +; A) *
|
Z : T2 := T2(IDENT_INT(3))/4; -- Z = 50 USING
|
Z : T2 := T2(IDENT_INT(3))/4; -- Z = 50 USING
|
-- DERIVED /
|
-- DERIVED /
|
FUNCTION "/" (L, R : T2) RETURN T2; -- D) FOR /
|
FUNCTION "/" (L, R : T2) RETURN T2; -- D) FOR /
|
X , Y : CONSTANT T2 := 3;
|
X , Y : CONSTANT T2 := 3;
|
END P2;
|
END P2;
|
|
|
PACKAGE BODY P2 IS
|
PACKAGE BODY P2 IS
|
FUNCTION "+" (L, R : T2) RETURN T2 IS
|
FUNCTION "+" (L, R : T2) RETURN T2 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN T2(IDENT_INT(5));
|
RETURN T2(IDENT_INT(5));
|
ELSE RETURN T2(IDENT_INT(6));
|
ELSE RETURN T2(IDENT_INT(6));
|
END IF;
|
END IF;
|
END "+";
|
END "+";
|
|
|
FUNCTION "*" (L, R : T2) RETURN T2 IS
|
FUNCTION "*" (L, R : T2) RETURN T2 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN T2(IDENT_INT(7));
|
RETURN T2(IDENT_INT(7));
|
ELSE RETURN T2(IDENT_INT(8));
|
ELSE RETURN T2(IDENT_INT(8));
|
END IF;
|
END IF;
|
END "*";
|
END "*";
|
|
|
FUNCTION "/" (L, R : T2) RETURN T2 IS
|
FUNCTION "/" (L, R : T2) RETURN T2 IS
|
BEGIN
|
BEGIN
|
IF L = R THEN
|
IF L = R THEN
|
RETURN T2(IDENT_INT(9));
|
RETURN T2(IDENT_INT(9));
|
ELSE RETURN T2(IDENT_INT(10));
|
ELSE RETURN T2(IDENT_INT(10));
|
END IF;
|
END IF;
|
END "/";
|
END "/";
|
BEGIN
|
BEGIN
|
IF X + Y /= 5 THEN
|
IF X + Y /= 5 THEN
|
FAILED ("DERIVED SUBPROGRAM NOT HIDDEN BY " &
|
FAILED ("DERIVED SUBPROGRAM NOT HIDDEN BY " &
|
"EXPLICIT DECLARATION - '+' ");
|
"EXPLICIT DECLARATION - '+' ");
|
END IF;
|
END IF;
|
|
|
IF Y - X /= 3 THEN
|
IF Y - X /= 3 THEN
|
FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " &
|
FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " &
|
"DERIVED SUBPROGRAM - '-' ");
|
"DERIVED SUBPROGRAM - '-' ");
|
END IF;
|
END IF;
|
|
|
IF X * Y /= 7 THEN
|
IF X * Y /= 7 THEN
|
FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " &
|
FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " &
|
"EXPLICIT DECLARATION - '*' ");
|
"EXPLICIT DECLARATION - '*' ");
|
END IF;
|
END IF;
|
|
|
IF Y / X /= T2(IDENT_INT(9)) THEN
|
IF Y / X /= T2(IDENT_INT(9)) THEN
|
FAILED ("DERIVED OPERATOR NOT HIDDEN BY " &
|
FAILED ("DERIVED OPERATOR NOT HIDDEN BY " &
|
"EXPLICIT DECLARATION - '/' ");
|
"EXPLICIT DECLARATION - '/' ");
|
END IF;
|
END IF;
|
|
|
IF Z /= 50 THEN
|
IF Z /= 50 THEN
|
FAILED ("DERIVED OPERATOR HIDDEN PREMATURELY " &
|
FAILED ("DERIVED OPERATOR HIDDEN PREMATURELY " &
|
" BY REDECLARED OPERATOR");
|
" BY REDECLARED OPERATOR");
|
END IF;
|
END IF;
|
|
|
END P2;
|
END P2;
|
|
|
BEGIN
|
BEGIN
|
|
|
NULL;
|
NULL;
|
|
|
END;
|
END;
|
|
|
RESULT;
|
RESULT;
|
|
|
END C74211A;
|
END C74211A;
|
|
|