| -- A83009A.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 A DERIVED TYPE DECLARATION AND A GENERIC |
| -- INSTANTIATION MAY DERIVE TWO OR MORE SUBPROGRAM HOMOGRAPHS. |
| -- CHECK THE CASES WHERE: |
| -- 1) THE DERIVED SUBPROGRAMS BECOME HOMOGRAPHS BECAUSE OF THE |
| -- SUBSTITUTION OF THE DERIVED TYPE FOR THE PARENT TYPE IN |
| -- THE IMPLICIT SUBPROGRAM SPECIFICATIONS. |
| -- 2) THE PARENT TYPE IS DECLARED IN A GENERIC INSTANCE AND |
| -- THE INSTANCE INCLUDES TWO OR MORE DERIVABLE SUBPROGRAMS |
| -- THAT ARE HOMOGRAPHS AS A RESULT OF THE ARGUMENTS GIVEN |
| -- FOR THE GENERIC FORMAL-TYPE PARAMETERS. |
| -- TEST CASES WHERE THE DERIVED TYPE DECLARATIONS AND GENERIC |
| -- INSTANTIATIONS ARE GIVEN IN: |
| -- . THE VISIBLE PART OF A PACKAGE SPECIFICATION, |
| -- . THE PRIVATE PART OF A PACKAGE SPECIFICATION, |
| -- . A PACKAGE BODY, |
| -- . A SUBPROGRAM BODY, |
| -- . A BLOCK STATEMENT. |
| -- |
| -- HISTORY: |
| -- VCL 03-08-88 CREATED ORIGINAL TEST. |
| |
| WITH REPORT; USE REPORT; |
| PROCEDURE A83009A IS |
| TYPE ENUM IS (E1, E2, E3); |
| |
| GENERIC |
| TYPE T1 IS (<>); |
| TYPE T2 IS (<>); |
| PACKAGE G_PACK IS |
| TYPE PARENT IS (E1, E2, E3); |
| |
| PROCEDURE HP (P1 : PARENT; P2 : T1); |
| PROCEDURE HP (P3 : PARENT; P4 : T2); |
| |
| FUNCTION HF (P1 : T1) RETURN PARENT; |
| FUNCTION HF (P2 : T2) RETURN PARENT; |
| END G_PACK; |
| |
| PACKAGE BODY G_PACK IS |
| PROCEDURE HP (P1 : PARENT; P2 : T1) IS |
| BEGIN |
| NULL; |
| END HP; |
| |
| PROCEDURE HP (P3 : PARENT; P4 : T2) IS |
| BEGIN |
| NULL; |
| END HP; |
| |
| FUNCTION HF (P1 : T1) RETURN PARENT IS |
| BEGIN |
| RETURN E1; |
| END HF; |
| |
| FUNCTION HF (P2 : T2) RETURN PARENT IS |
| BEGIN |
| RETURN E2; |
| END HF; |
| END G_PACK; |
| BEGIN |
| TEST ("A83009A", "A DERIVED TYPE DECLARATION AND A GENERIC " & |
| "INSTANTIATION MAY DERIVE TWO OR " & |
| "MORE SUBPROGRAM HOMOGRAPHS"); |
| |
| DECLARE |
| -- SUBPROGRAMS BECOME HOMOGRAPHS BECAUSE OF SUBSTITUTION. |
| |
| PACKAGE PACK2 IS |
| TYPE CHILD1 IS PRIVATE; |
| |
| PACKAGE IN_PACK2 IS |
| TYPE PARENT IS (E1, E2, E3); |
| PROCEDURE HP (P1 : PARENT; P2 : CHILD1); |
| PROCEDURE HP (P3 : CHILD1; P4 : PARENT); |
| |
| FUNCTION HF (P1 : CHILD1; P2 : PARENT) |
| RETURN PARENT; |
| FUNCTION HF (P3 : PARENT; P4 : CHILD1) |
| RETURN PARENT; |
| END IN_PACK2; |
| PRIVATE |
| TYPE CHILD1 IS NEW IN_PACK2.PARENT; |
| END PACK2; |
| |
| PACKAGE BODY PACK2 IS |
| TYPE CHILD2 IS NEW CHILD1; |
| |
| PACKAGE IN_BODY IS |
| TYPE CHILD3 IS NEW CHILD1; |
| END IN_BODY; |
| |
| PROCEDURE P IS |
| TYPE CHILD4 IS NEW CHILD1; |
| BEGIN |
| NULL; |
| END; |
| |
| PACKAGE BODY IN_PACK2 IS |
| PROCEDURE HP (P1 : PARENT; P2 : CHILD1) IS |
| BEGIN |
| NULL; |
| END HP; |
| |
| PROCEDURE HP (P3 : CHILD1; P4 : PARENT) IS |
| BEGIN |
| NULL; |
| END HP; |
| |
| FUNCTION HF (P1 : CHILD1; P2 : PARENT) |
| RETURN PARENT IS |
| BEGIN |
| RETURN E1; |
| END HF; |
| |
| FUNCTION HF (P3 : PARENT; P4 : CHILD1) |
| RETURN PARENT IS |
| BEGIN |
| RETURN E2; |
| END HF; |
| END IN_PACK2; |
| BEGIN |
| DECLARE |
| TYPE CHILD5 IS NEW CHILD1; |
| BEGIN |
| NULL; |
| END; |
| END PACK2; |
| BEGIN |
| NULL; |
| END; |
| |
| DECLARE |
| -- PARENT TYPE IN GENERIC INSTANCE HAS DERIVABLE HOMOGRAPHS. |
| |
| PACKAGE INSTANCE1 IS |
| NEW G_PACK (BOOLEAN, BOOLEAN); |
| |
| TYPE CHILD1 IS NEW INSTANCE1.PARENT; |
| |
| PACKAGE PACK1 IS |
| PACKAGE INSTANCE2 IS |
| NEW G_PACK (CHARACTER, CHARACTER); |
| |
| TYPE CHILD2 IS NEW INSTANCE2.PARENT; |
| TYPE CHILD3 IS PRIVATE; |
| PRIVATE |
| PACKAGE INSTANCE3 IS |
| NEW G_PACK (ENUM, ENUM); |
| |
| TYPE CHILD3 IS NEW INSTANCE3.PARENT; |
| END PACK1; |
| |
| PROCEDURE P1 IS |
| PACKAGE INSTANCE4 IS |
| NEW G_PACK (BOOLEAN, BOOLEAN); |
| |
| TYPE CHILD4 IS NEW INSTANCE4.PARENT; |
| BEGIN |
| NULL; |
| END P1; |
| |
| PACKAGE BODY PACK1 IS |
| PACKAGE INSTANCE5 IS |
| NEW G_PACK (ENUM, ENUM); |
| |
| TYPE CHILD5 IS NEW INSTANCE5.PARENT; |
| END PACK1; |
| BEGIN |
| NULL; |
| END; |
| |
| RESULT; |
| END A83009A; |