| -- A49027B.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 SUBTYPE CAN BE NONSTATIC IN A GENERIC TEMPLATE |
| -- AND STATIC IN THE CORRESPONDING INSTANCE. |
| |
| -- CHECK THAT IF A GENERIC PARAMETER IS A STATIC EXPRESSION AND THE |
| -- CORRESPONDING (IN) PARAMETER HAS A STATIC SUBTYPE IN THE INSTANCE, |
| -- THEN EACH USE OF THE FORMAL PARAMETERS IN THE INSTANCE IS SAID TO |
| -- BE STATIC. |
| -- |
| -- A NAME DENOTING A CONSTANT DECLARED IN A GENERIC INSTANCE IS |
| -- ALLOWED AS A PRIMARY IN A STATIC EXPRESSION IF THE CONSTANT |
| -- IS DECLARED BY A CONSTANT DECLARATION WITH A STATIC SUBTYPE |
| -- AND INITIALIZED WITH A STATIC EXPRESSION. |
| -- |
| -- THIS IS A TEST BASED ON AI-00505/03-BI-WA. |
| |
| -- HISTORY: |
| -- EDWARD V. BERARD, 27 AUGUST 1990 |
| -- DAS 8 OCT 90 ADDED CODE TO MATCH EXAMPLE 1 IN |
| -- AI-00505. |
| -- JRL 05/29/92 CORRECTED MINOR PROBLEM IN REPORT.TEST STRING. |
| -- JRL 02/18/93 EXPANDED TEXT OF REPORT.TEST STRING. |
| -- PWN 04/14/95 CORRECTED MINOR COPYRIGHT COMMENT PROBLEM. |
| |
| |
| WITH REPORT ; |
| |
| PROCEDURE A49027B IS |
| |
| BEGIN -- A49027B |
| |
| REPORT.TEST ("A49027B", "CHECK THAT IF A GENERIC ACTUAL " & |
| "PARAMETER IS A STATIC EXPRESSION AND THE " & |
| "CORRESPONDING FORMAL PARAMETER HAS A STATIC " & |
| "SUBTYPE IN THE INSTANCE, THEN EACH USE OF THE " & |
| "FORMAL PARAMETER IN THE INSTANCE IS SAID TO BE " & |
| "STATIC. CHECK THAT A NAME DENOTING A CONSTANT " & |
| "DECLARED IN A GENERIC INSTANCE IS ALLOWED AS " & |
| "A PRIMARY IN A STATIC EXPRESSION IF THE " & |
| "CONSTANT IS DECLARED BY A CONSTANT DECLARATION " & |
| "WITH A STATIC SUBTYPE AND INITIALIZED WITH A " & |
| "STATIC EXPRESSION. (AI-00505)"); |
| |
| LOCAL_BLOCK: |
| |
| DECLARE |
| |
| TYPE NUMBER IS RANGE 1 .. 10 ; |
| TYPE COLOR IS (RED, ORANGE, YELLOW, GREEN, BLUE) ; |
| MIDDLE_COLOR : CONSTANT COLOR := GREEN ; |
| |
| ENUMERATED_VALUE : COLOR := COLOR'LAST ; |
| |
| GENERIC |
| |
| TYPE NUMBER_TYPE IS RANGE <> ; |
| X : INTEGER ; |
| TYPE ENUMERATED IS (<>) ; |
| |
| FIRST_NUMBER : IN NUMBER_TYPE ; |
| SECOND_NUMBER : IN NUMBER_TYPE ; |
| THIRD_NUMBER : IN NUMBER_TYPE ; |
| FIRST_ENUMERATED : IN ENUMERATED ; |
| SECOND_ENUMERATED : IN ENUMERATED ; |
| THIRD_ENUMERATED : IN ENUMERATED ; |
| |
| FIRST_INTEGER_VALUE : IN INTEGER ; |
| SECOND_INTEGER_VALUE : IN INTEGER ; |
| |
| PACKAGE STATIC_TEST IS |
| |
| Y : CONSTANT INTEGER := X; |
| Z : CONSTANT NUMBER_TYPE := 5; |
| |
| SUBTYPE FIRST_NUMBER_SUBTYPE IS NUMBER_TYPE |
| RANGE FIRST_NUMBER .. SECOND_NUMBER ; |
| SUBTYPE SECOND_NUMBER_SUBTYPE IS NUMBER_TYPE |
| RANGE FIRST_NUMBER .. THIRD_NUMBER ; |
| |
| SUBTYPE FIRST_ENUMERATED_SUBTYPE IS ENUMERATED |
| RANGE FIRST_ENUMERATED .. SECOND_ENUMERATED ; |
| SUBTYPE SECOND_ENUMERATED_SUBTYPE IS ENUMERATED |
| RANGE FIRST_ENUMERATED .. THIRD_ENUMERATED ; |
| |
| SUBTYPE THIRD_NUMBER_TYPE IS INTEGER |
| RANGE FIRST_INTEGER_VALUE .. SECOND_INTEGER_VALUE ; |
| |
| END STATIC_TEST ; |
| |
| PACKAGE NEW_STATIC_TEST IS NEW STATIC_TEST |
| (NUMBER_TYPE => NUMBER, |
| X => 3, |
| ENUMERATED => COLOR, |
| FIRST_NUMBER => NUMBER'FIRST, |
| SECOND_NUMBER => NUMBER'LAST, |
| THIRD_NUMBER => NUMBER'SUCC(NUMBER'FIRST), |
| FIRST_ENUMERATED => RED, |
| SECOND_ENUMERATED => MIDDLE_COLOR, |
| THIRD_ENUMERATED => COLOR'VAL (1), |
| FIRST_INTEGER_VALUE => COLOR'POS (YELLOW), |
| SECOND_INTEGER_VALUE => NUMBER'POS (5)) ; |
| |
| TYPE T1 IS RANGE 1 .. NEW_STATIC_TEST.Y; |
| TYPE T2 IS RANGE 1 .. NEW_STATIC_TEST.Z; |
| |
| TYPE ANOTHER_NUMBER IS RANGE |
| NEW_STATIC_TEST.FIRST_NUMBER_SUBTYPE'FIRST .. |
| NEW_STATIC_TEST.FIRST_NUMBER_SUBTYPE'LAST ; |
| |
| TYPE YET_ANOTHER_NUMBER IS RANGE |
| NEW_STATIC_TEST.SECOND_NUMBER_SUBTYPE'FIRST .. |
| NEW_STATIC_TEST.SECOND_NUMBER_SUBTYPE'LAST ; |
| |
| TYPE STILL_ANOTHER_NUMBER IS RANGE |
| NEW_STATIC_TEST.THIRD_NUMBER_TYPE'FIRST .. |
| NEW_STATIC_TEST.THIRD_NUMBER_TYPE'LAST ; |
| |
| BEGIN -- LOCAL_BLOCK |
| |
| CASE ENUMERATED_VALUE IS |
| WHEN YELLOW => NULL ; |
| WHEN NEW_STATIC_TEST.FIRST_ENUMERATED_SUBTYPE'FIRST |
| => NULL ; |
| WHEN NEW_STATIC_TEST.FIRST_ENUMERATED_SUBTYPE'LAST |
| => NULL ; |
| WHEN NEW_STATIC_TEST.SECOND_ENUMERATED_SUBTYPE'LAST |
| => NULL ; |
| WHEN COLOR'LAST => NULL ; |
| END CASE ; |
| |
| END LOCAL_BLOCK ; |
| |
| REPORT.RESULT ; |
| |
| END A49027B ; |