| -- C83051A.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 DECLARATIONS IN THE VISIBLE PART OF A PACKAGE NESTED |
| -- WITHIN THE VISIBLE PART OF A PACKAGE ARE VISIBLE BY SELECTION |
| -- FROM OUTSIDE THE OUTERMOST PACKAGE. |
| |
| -- HISTORY: |
| -- GMT 09/07/88 CREATED ORIGINAL TEST. |
| |
| WITH REPORT; USE REPORT; |
| |
| PROCEDURE C83051A IS |
| |
| BEGIN |
| TEST ("C83051A", "CHECK THAT DECLARATIONS IN THE VISIBLE " & |
| "PART OF A PACKAGE NESTED WITHIN THE VISIBLE " & |
| "PART OF A PACKAGE ARE VISIBLE BY SELECTION " & |
| "FROM OUTSIDE THE OUTERMOST PACKAGE"); |
| A_BLOCK: |
| DECLARE |
| PACKAGE APACK IS |
| PACKAGE BPACK IS |
| TYPE T1 IS (RED,GREEN); |
| TYPE T2A IS ('A', 'B', 'C', 'D'); |
| TYPE T3 IS NEW BOOLEAN; |
| TYPE T4 IS NEW INTEGER RANGE -3 .. 8; |
| TYPE T5 IS DIGITS 5; |
| TYPE T67 IS DELTA 0.5 RANGE -2.0 .. 10.0; |
| TYPE T9A IS ARRAY (INTEGER RANGE <>) OF T3; |
| SUBTYPE T9B IS T9A (1..10); |
| TYPE T9C IS ACCESS T9B; |
| TYPE T10 IS PRIVATE; |
| V1 : T3 := FALSE; |
| ZERO : CONSTANT T4 := 0; |
| A_FLT : T5 := 3.0; |
| A_FIX : T67 := -1.0; |
| ARY : T9A(1..4) := (TRUE,TRUE,TRUE,FALSE); |
| P1 : T9C := NEW T9B'( 1..5 => T3'(TRUE), |
| 6..10 => T3'(FALSE) ); |
| C1 : CONSTANT T10; |
| |
| FUNCTION RET_T1 (X : T1) RETURN T1; |
| |
| FUNCTION RET_CHAR (X : CHARACTER) RETURN T10; |
| |
| GENERIC |
| PROCEDURE DO_NOTHING (X : IN OUT T3); |
| PRIVATE |
| TYPE T10 IS NEW CHARACTER; |
| C1 : CONSTANT T10 := 'J'; |
| END BPACK; |
| END APACK; |
| |
| PACKAGE BODY APACK IS |
| PACKAGE BODY BPACK IS |
| FUNCTION RET_T1 (X : T1) RETURN T1 IS |
| BEGIN |
| IF X = RED THEN |
| RETURN GREEN; |
| ELSE |
| RETURN RED; |
| END IF; |
| END RET_T1; |
| |
| FUNCTION RET_CHAR (X : CHARACTER) RETURN T10 IS |
| BEGIN |
| RETURN T10(X); |
| END RET_CHAR; |
| |
| PROCEDURE DO_NOTHING (X : IN OUT T3) IS |
| BEGIN |
| IF X = TRUE THEN |
| X := FALSE; |
| ELSE |
| X := TRUE; |
| END IF; |
| END DO_NOTHING; |
| END BPACK; |
| END APACK; |
| |
| PROCEDURE NEW_DO_NOTHING IS NEW APACK.BPACK.DO_NOTHING; |
| |
| BEGIN |
| |
| -- A1: VISIBILITY FOR UNOVERLOADED ENUMERATION LITERALS |
| |
| IF APACK.BPACK.">"(APACK.BPACK.RED, APACK.BPACK.GREEN) THEN |
| FAILED ("VISIBILITY FOR UNOVERLOADED ENUMERATION " & |
| "LITERAL BAD - A1"); |
| END IF; |
| |
| |
| -- A2: VISIBILITY FOR OVERLOADED |
| -- ENUMERATION CHARACTER LITERALS |
| |
| IF APACK.BPACK."<"(APACK.BPACK.T2A'(APACK.BPACK.'C'), |
| APACK.BPACK.T2A'(APACK.BPACK.'B')) THEN |
| FAILED ("VISIBILITY FOR OVERLOADED ENUMERATION " & |
| "LITERAL BAD - A2"); |
| END IF; |
| |
| |
| -- A3: VISIBILITY FOR A DERIVED BOOLEAN TYPE |
| |
| IF APACK.BPACK."<"(APACK.BPACK.T3'(APACK.BPACK.TRUE), |
| APACK.BPACK.FALSE) THEN |
| FAILED ("VISIBILITY FOR DERIVED BOOLEAN BAD - A3"); |
| END IF; |
| |
| |
| -- A4: VISIBILITY FOR AN INTEGER TYPE |
| |
| IF APACK.BPACK."/="(APACK.BPACK."MOD"(6,2),APACK.BPACK.ZERO) |
| THEN FAILED ("VISIBILITY FOR INTEGER TYPE BAD - A4"); |
| END IF; |
| |
| |
| -- A5: VISIBILITY FOR A FLOATING POINT TYPE |
| |
| IF APACK.BPACK.">"(APACK.BPACK.T5'(2.7),APACK.BPACK.A_FLT) |
| THEN FAILED ("VISIBILITY FOR FLOATING POINT BAD - A5"); |
| END IF; |
| |
| |
| -- A6: VISIBILITY FOR A FIXED POINT INVOLVING UNARY MINUS |
| |
| IF APACK.BPACK."<"(APACK.BPACK.A_FIX,APACK.BPACK.T67' |
| (APACK.BPACK."-"(1.5))) THEN |
| FAILED ("VISIBILITY FOR FIXED POINT WITH UNARY MINUS " & |
| "BAD - A6"); |
| END IF; |
| |
| |
| -- A7: VISIBILITY FOR A FIXED POINT DIVIDED BY INTEGER |
| |
| IF APACK.BPACK."/="(APACK.BPACK.T67(-0.5),APACK.BPACK."/" |
| (APACK.BPACK.A_FIX,2)) THEN |
| FAILED ("VISIBILITY FOR FIXED POINT DIVIDED BY " & |
| "INTEGER BAD - A7"); |
| END IF; |
| |
| |
| -- A8: VISIBILITY FOR ARRAY EQUALITY |
| |
| IF APACK.BPACK."/="(APACK.BPACK.ARY,(APACK.BPACK.T3(TRUE), |
| APACK.BPACK.T3(TRUE),APACK.BPACK.T3(TRUE), |
| APACK.BPACK.T3(FALSE))) THEN |
| FAILED ("VISIBILITY FOR ARRAY EQUALITY BAD - A8"); |
| END IF; |
| |
| |
| -- A9: VISIBILITY FOR ACCESS EQUALITY |
| |
| IF APACK.BPACK."/="(APACK.BPACK.P1(3), |
| APACK.BPACK.T3(IDENT_BOOL(TRUE))) |
| THEN FAILED ("VISIBILITY FOR ACCESS EQUALITY BAD - A9"); |
| END IF; |
| |
| |
| -- A10: VISIBILITY FOR PRIVATE TYPE |
| |
| IF APACK.BPACK."/="(APACK.BPACK.C1, |
| APACK.BPACK.RET_CHAR('J')) THEN |
| FAILED ("VISIBILITY FOR PRIVATE TYPE BAD - A10"); |
| END IF; |
| |
| |
| -- A11: VISIBILITY FOR DERIVED SUBPROGRAM |
| |
| IF APACK.BPACK."/="(APACK.BPACK.RET_T1(APACK.BPACK.RED), |
| APACK.BPACK.GREEN) THEN |
| FAILED ("VISIBILITY FOR DERIVED SUBPROGRAM BAD - A11"); |
| END IF; |
| |
| -- A12: VISIBILITY FOR GENERIC SUBPROGRAM |
| |
| NEW_DO_NOTHING (APACK.BPACK.V1); |
| |
| IF APACK.BPACK."/="(APACK.BPACK.V1,APACK.BPACK.T3(TRUE)) THEN |
| FAILED ("VISIBILITY FOR GENERIC SUBPROGRAM BAD - A12"); |
| END IF; |
| |
| END A_BLOCK; |
| |
| B_BLOCK: |
| DECLARE |
| GENERIC |
| TYPE T1 IS (<>); |
| PACKAGE GENPACK IS |
| PACKAGE APACK IS |
| PACKAGE BPACK IS |
| TYPE T1 IS (ORANGE,GREEN); |
| TYPE T2A IS ('E', 'F', 'G'); |
| TYPE T3 IS NEW BOOLEAN; |
| TYPE T4 IS NEW INTEGER RANGE -3 .. 8; |
| TYPE T5 IS DIGITS 5; |
| TYPE T67 IS DELTA 0.5 RANGE -3.0 .. 25.0; |
| TYPE T9A IS ARRAY (INTEGER RANGE <>) OF T3; |
| SUBTYPE T9B IS T9A (2 .. 8); |
| TYPE T9C IS ACCESS T9B; |
| TYPE T10 IS PRIVATE; |
| V1 : T3 := TRUE; |
| SIX : T4 := 6; |
| B_FLT : T5 := 4.0; |
| ARY : T9A(1..4) := (TRUE,FALSE,TRUE,FALSE); |
| P1 : T9C := NEW T9B'( 2..4 => T3'(FALSE), |
| 5..8 => T3'(TRUE)); |
| K1 : CONSTANT T10; |
| |
| FUNCTION RET_T1 (X : T1) RETURN T1; |
| |
| FUNCTION RET_CHAR (X : CHARACTER) RETURN T10; |
| |
| GENERIC |
| PROCEDURE DO_NOTHING (X : IN OUT T3); |
| PRIVATE |
| TYPE T10 IS NEW CHARACTER; |
| K1 : CONSTANT T10 := 'V'; |
| END BPACK; |
| END APACK; |
| END GENPACK; |
| |
| PACKAGE BODY GENPACK IS |
| PACKAGE BODY APACK IS |
| PACKAGE BODY BPACK IS |
| FUNCTION RET_T1 (X : T1) RETURN T1 IS |
| BEGIN |
| IF X = ORANGE THEN |
| RETURN GREEN; |
| ELSE |
| RETURN ORANGE; |
| END IF; |
| END RET_T1; |
| |
| FUNCTION RET_CHAR (X : CHARACTER) RETURN T10 IS |
| BEGIN |
| RETURN T10(X); |
| END RET_CHAR; |
| |
| PROCEDURE DO_NOTHING (X : IN OUT T3) IS |
| BEGIN |
| IF X = TRUE THEN |
| X := FALSE; |
| ELSE |
| X := TRUE; |
| END IF; |
| END DO_NOTHING; |
| END BPACK; |
| END APACK; |
| END GENPACK; |
| |
| PACKAGE MYPACK IS NEW GENPACK (T1 => INTEGER); |
| |
| PROCEDURE MY_DO_NOTHING IS NEW MYPACK.APACK.BPACK.DO_NOTHING; |
| |
| BEGIN |
| |
| -- B1: GENERIC INSTANCE OF UNOVERLOADED ENUMERATION LITERAL |
| |
| IF MYPACK.APACK.BPACK."<"(MYPACK.APACK.BPACK.GREEN, |
| MYPACK.APACK.BPACK.ORANGE) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF " & |
| "UNOVERLOADED ENUMERATION LITERAL BAD - B1"); |
| END IF; |
| |
| |
| -- B2: GENERIC INSTANCE OF OVERLOADED ENUMERATION LITERAL |
| |
| IF MYPACK.APACK.BPACK.">"(MYPACK.APACK.BPACK.T2A'(MYPACK. |
| APACK.BPACK.'F'),MYPACK.APACK.BPACK.T2A'(MYPACK.APACK. |
| BPACK.'G')) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF " & |
| "OVERLOADED ENUMERATION LITERAL BAD - B2"); |
| END IF; |
| |
| |
| -- B3: VISIBILITY FOR GENERIC INSTANCE OF DERIVED BOOLEAN |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK."NOT"(MYPACK. |
| APACK.BPACK.T3'(MYPACK.APACK.BPACK.TRUE)),MYPACK.APACK. |
| BPACK.FALSE) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF DERIVED " & |
| "BOOLEAN BAD - B3"); |
| END IF; |
| |
| |
| -- B4: VISIBILITY FOR GENERIC INSTANCE OF DERIVED INTEGER |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK."MOD"(MYPACK. |
| APACK.BPACK.SIX,2),0) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF INTEGER " & |
| "BAD - B4"); |
| END IF; |
| |
| |
| -- B5: VISIBILITY FOR GENERIC INSTANCE OF FLOATING POINT |
| |
| IF MYPACK.APACK.BPACK.">"(MYPACK.APACK.BPACK.T5'(1.9),MYPACK. |
| APACK.BPACK.B_FLT) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF FLOATING " & |
| "POINT BAD - B5"); |
| END IF; |
| |
| |
| -- B6: VISIBILITY FOR GENERIC INSTANCE OF |
| -- FIXED POINT UNARY PLUS |
| |
| IF MYPACK.APACK.BPACK."<"(2.5,MYPACK.APACK.BPACK.T67'(MYPACK. |
| APACK.BPACK."+"(1.75))) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF FIXED " & |
| "POINT UNARY PLUS BAD - B6"); |
| END IF; |
| |
| |
| -- B7: VISIBILITY FOR GENERIC INSTANCE OF |
| -- FIXED POINT DIVIDED BY INTEGER |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK."/"(2.5,4), |
| 0.625) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF FIXED " & |
| "POINT DIVIDED BY INTEGER BAD - B7"); |
| END IF; |
| |
| |
| -- B8: VISIBILITY FOR GENERIC INSTANCE OF ARRAY EQUALITY |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK.ARY,(MYPACK. |
| APACK.BPACK.T3(TRUE),MYPACK.APACK.BPACK.T3(FALSE),MYPACK. |
| APACK.BPACK.T3(TRUE),MYPACK.APACK.BPACK.T3(FALSE))) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF ARRAY " & |
| "EQUALITY BAD - B8"); |
| END IF; |
| |
| |
| -- B9: VISIBILITY FOR GENERIC INSTANCE OF ACCESS EQUALITY |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK.P1(3),MYPACK. |
| APACK.BPACK.T3(IDENT_BOOL(FALSE))) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF ACCESS " & |
| "EQUALITY BAD - B9"); |
| END IF; |
| |
| |
| -- B10: VISIBILITY FOR GENERIC INSTANCE OF PRIVATE EQUALITY |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK.K1,MYPACK.APACK. |
| BPACK.RET_CHAR('V')) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF PRIVATE " & |
| "EQUALITY BAD - B10"); |
| END IF; |
| |
| |
| -- B11: VISIBILITY FOR GENERIC INSTANCE OF DERIVED SUBPROGRAM |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK.RET_T1(MYPACK. |
| APACK.BPACK.ORANGE),MYPACK.APACK.BPACK.GREEN) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF DERIVED " & |
| "SUBPROGRAM BAD - B11"); |
| END IF; |
| |
| -- B12: VISIBILITY FOR GENERIC INSTANCE OF GENERIC SUBPROGRAM |
| |
| MY_DO_NOTHING (MYPACK.APACK.BPACK.V1); |
| |
| IF MYPACK.APACK.BPACK."/="(MYPACK.APACK.BPACK.V1, |
| MYPACK.APACK.BPACK.T3(FALSE)) THEN |
| FAILED ("VISIBILITY FOR GENERIC INSTANCE OF GENERIC " & |
| "SUBPROGRAM BAD - B12"); |
| END IF; |
| |
| END B_BLOCK; |
| |
| RESULT; |
| END C83051A; |