-- A74205E.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 THE ADDITIONAL OPERATIONS FOR A COMPOSITE TYPE WITH A -- COMPONENT OF A PRIVATE TYPE ARE AVAILABLE AT THE EARLIEST -- PLACE WITHIN THE IMMEDIATE SCOPE OF THE DECLARATION OF THE COMPOSITE -- TYPE AND AFTER THE FULL DECLARATION OF THE PRIVATE TYPE. -- IN PARTICULAR, CHECH FOR THE FOLLOWING : -- (1) RELATIONAL OPERATORS WITH ARRAYS OF SCALAR TYPES -- (2) EQUALITY WITH ARRAYS AND RECORDS OF LIMITED PRIVATE TYPES -- (3) LOGICAL OPERATORS WITH ARRAYS OF BOOLEAN TYPES -- (4) CATENATION WITH ARRAYS OF LIMITED PRIVATE TYPES -- (5) INITIALIZATION WITH ARRAYS AND RECORDS OF LIMITED PRIVATE TYPES -- (6) ASSIGNMENT WITH ARRAYS AND RECORDS OF LIMITED PRIVATE TYPES -- (7) SELECTED COMPONENTS WITH COMPOSITES OF PRIVATE RECORD TYPES -- (8) INDEXED COMPONENTS WITH COMPOSITES OF PRIVATE ARRAY TYPES -- (9) SLICES WITH COMPOSITES OF PRIVATE ARRAY TYPES -- (10) QUALIFICATION FOR COMPOSITES OF PRIVATE TYPES -- (11) AGGREGATES FOR ARRAYS AND RECORDS OF PRIVATES TYPES -- (12) USE OF 'SIZE FOR ARRAYS AND RECORDS OF PRIVATE TYPES -- DSJ 5/2/83 WITH REPORT ; PROCEDURE A74205E IS USE REPORT ; BEGIN TEST("A74205E", "CHECK THAT ADDITIONAL OPERATIONS FOR " & "COMPOSITE TYPES OF PRIVATE TYPES ARE " & "AVAILABLE AT THE EARLIEST PLACE AFTER THE " & "FULL DECLARATION AND IN THE IMMEDIATE " & "SCOPE OF THE COMPOSITE TYPE") ; DECLARE PACKAGE PACK1 IS TYPE LP1 IS LIMITED PRIVATE ; PACKAGE PACK_LP IS TYPE LP_ARR IS ARRAY (INTEGER RANGE <>) OF LP1 ; SUBTYPE LP_ARR2 IS LP_ARR ( 1 .. 2 ) ; SUBTYPE LP_ARR4 IS LP_ARR ( 1 .. 4 ) ; END PACK_LP ; TYPE T1 IS PRIVATE ; PACKAGE PACK2 IS TYPE ARR IS ARRAY (INTEGER RANGE <>) OF T1 ; SUBTYPE ARR2 IS ARR ( 1 .. 2 ) ; SUBTYPE ARR4 IS ARR ( 1 .. 4 ) ; END PACK2 ; TYPE T2 IS PRIVATE ; TYPE T3 IS PRIVATE ; PACKAGE PACK3 IS TYPE ARR_T2 IS ARRAY ( 1 .. 2 ) OF T2 ; TYPE ARR_T3 IS ARRAY ( 1 .. 2 ) OF T3 ; END PACK3 ; PRIVATE TYPE LP1 IS NEW BOOLEAN ; TYPE T1 IS NEW BOOLEAN ; TYPE T2 IS ARRAY ( 1 .. 2 ) OF INTEGER ; TYPE T3 IS RECORD C1 : INTEGER ; END RECORD ; END PACK1 ; PACKAGE BODY PACK1 IS PACKAGE BODY PACK_LP IS L1, L2 : LP_ARR2 := (TRUE,FALSE) ; -- LEGAL A3 : LP_ARR2 := L1 ; -- LEGAL B3 : BOOLEAN := L1 = L2 ; -- LEGAL B4 : BOOLEAN := L1 /= L2 ; -- LEGAL END PACK_LP ; PACKAGE BODY PACK2 IS A1, A2 : ARR2 := (FALSE,TRUE) ; -- LEGAL A4 : ARR2 := ARR2'(A1) ; -- LEGAL B1 : BOOLEAN := A1 < A2 ; -- LEGAL B2 : BOOLEAN := A1 >= A2 ; -- LEGAL N3 : INTEGER := A1'SIZE ; -- LEGAL PROCEDURE G1 (X : ARR2 := NOT A1) IS -- LEGAL BEGIN NULL ; END G1 ; PROCEDURE G2 (X : ARR2 := A1 AND A2) IS -- LEGAL BEGIN NULL ; END G2 ; PROCEDURE G3 (X : ARR4 := A1 & A2) IS -- LEGAL BEGIN NULL ; END G3 ; PROCEDURE G4 (X : ARR2 := (FALSE,TRUE) ) IS -- LEGAL BEGIN NULL ; END G4 ; END PACK2 ; PACKAGE BODY PACK3 IS X2 : ARR_T2 := (1=>(1,2), 2=>(3,4)) ; -- LEGAL X3 : ARR_T3 := (1=>(C1=>5), 2=>(C1=>6)) ; -- LEGAL N1 : INTEGER := X3(1).C1 ; -- LEGAL N2 : INTEGER := X2(1)(2) ; -- LEGAL N4 : T2 := X2(1)(1..2) ; -- LEGAL END PACK3 ; END PACK1 ; BEGIN NULL ; END ; RESULT ; END A74205E ;