1-- C37312A.ADA 2 3-- Grant of Unlimited Rights 4-- 5-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, 6-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained 7-- unlimited rights in the software and documentation contained herein. 8-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making 9-- this public release, the Government intends to confer upon all 10-- recipients unlimited rights equal to those held by the Government. 11-- These rights include rights to use, duplicate, release or disclose the 12-- released technical data and computer software in whole or in part, in 13-- any manner and for any purpose whatsoever, and to have or permit others 14-- to do so. 15-- 16-- DISCLAIMER 17-- 18-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR 19-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED 20-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE 21-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE 22-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A 23-- PARTICULAR PURPOSE OF SAID MATERIAL. 24--* 25-- OBJECTIVE: 26-- CHECK THAT A DISCRIMINANT CAN HAVE A GENERIC FORMAL DISCRETE 27-- TYPE WHEN IT DOES NOT GOVERN A VARIANT PART AND THAT AN 28-- OBJECT OF A GENERIC FORMAL TYPE CAN CONSTRAIN A COMPONENT 29-- IN A VARIANT PART. 30 31-- HISTORY: 32-- AH 08/22/86 CREATED ORIGINAL TEST. 33-- JET 08/13/87 REVISED FROM CLASS 'A' TO CLASS 'C' TEST. 34 35WITH REPORT; USE REPORT; 36 37PROCEDURE C37312A IS 38 39BEGIN 40 TEST ("C37312A", "DISCRIMINANT TYPE IS GENERIC FORMAL TYPE"); 41 42 DECLARE 43 TYPE T IS RANGE 1 ..5; 44 45 GENERIC 46 TYPE G1 IS RANGE <>; 47 PACKAGE P IS 48 TYPE G2 (D1 : G1) IS 49 RECORD 50 R1 : G1; 51 R2 : BOOLEAN; 52 END RECORD; 53 54 TYPE STR IS ARRAY(G1 RANGE <>) OF INTEGER; 55 TYPE G3 (D : G1; E : INTEGER) IS 56 RECORD 57 CASE E IS 58 WHEN 1 => 59 S1 : STR(G1'FIRST..D); 60 WHEN OTHERS => 61 S2 : INTEGER; 62 END CASE; 63 END RECORD; 64 65 END P; 66 67 PACKAGE PKG IS NEW P (G1 => T); 68 USE PKG; 69 70 A2: G2(1) := (1, 5, FALSE); 71 A3: G3(5, 1) := (5, 1, (1, 2, 3, 4, 5)); 72 73 BEGIN 74 A2.R2 := IDENT_BOOL (TRUE); 75 A3.S1(1) := IDENT_INT (6); 76 77 IF A2 /= (1, 5, TRUE) THEN 78 FAILED ("INVALID CONTENTS OF RECORD A2"); 79 END IF; 80 IF A3 /= (5, 1, (6, 2, 3, 4, 5)) THEN 81 FAILED ("INVALID CONTENTS OF RECORD A3"); 82 END IF; 83 END; 84 85 RESULT; 86 87END C37312A; 88