1-- C74208B.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 'CONSTRAINED FOR OBJECTS OF A PRIVATE TYPE WITH
27--     VISIBLE DISCRIMINANTS IS AVAILABLE OUTSIDE THE PACKAGE DECLARING
28--     THE TYPE AND IS AVAILABLE BEFORE AND AFTER THE FULL DECLARATION.
29
30-- HISTORY:
31--     BCB 07/14/88  CREATED ORIGINAL TEST.
32--     GJD 11/15/95  MOVED REC2_VAR OUT OF P DUE TO ADA 95 FREEZING RULES.
33
34WITH REPORT; USE REPORT;
35
36PROCEDURE C74208B IS
37
38     PACKAGE P IS
39          TYPE REC (D : INTEGER := 0) IS PRIVATE;
40          R1 : CONSTANT REC;
41          TYPE REC2 IS RECORD
42               COMP : BOOLEAN := R1'CONSTRAINED;
43          END RECORD;
44     PRIVATE
45          TYPE REC (D : INTEGER := 0) IS RECORD
46               NULL;
47          END RECORD;
48          R1 : CONSTANT REC := (D => 5);
49          R2 : REC := (D => 0);
50          R2A : REC(3);
51          R2CON : CONSTANT REC := (D => 3);
52          C : BOOLEAN := R2'CONSTRAINED;
53          D : BOOLEAN := R2A'CONSTRAINED;
54          E : BOOLEAN := R2CON'CONSTRAINED;
55     END P;
56
57     REC2_VAR : P.REC2;
58
59     R3 : P.REC(0);
60     R3A : P.REC;
61
62     A : BOOLEAN := R3'CONSTRAINED;
63     B : BOOLEAN := R3A'CONSTRAINED;
64
65     PACKAGE BODY P IS
66     BEGIN
67          TEST ("C74208B", "CHECK THAT 'CONSTRAINED FOR OBJECTS OF A " &
68                           "PRIVATE TYPE WITH VISIBLE DISCRIMINANTS " &
69                           "IS AVAILABLE OUTSIDE THE PACKAGE " &
70                           "DECLARING THE TYPE AND IS AVAILABLE " &
71                           "BEFORE AND AFTER THE FULL DECLARATION");
72
73          IF NOT REC2_VAR.COMP THEN
74               FAILED ("IMPROPER VALUE FOR 'CONSTRAINED BEFORE THE " &
75                       "FULL DECLARATION OF THE PRIVATE TYPE");
76          END IF;
77
78          IF C THEN
79               FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
80                       "FULL DECLARATION OF THE PRIVATE TYPE - 1");
81          END IF;
82
83          IF NOT D THEN
84               FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
85                       "FULL DECLARATION OF THE PRIVATE TYPE - 2");
86          END IF;
87
88          IF NOT E THEN
89               FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
90                       "FULL DECLARATION OF THE PRIVATE TYPE - 3");
91          END IF;
92     END P;
93
94BEGIN
95     IF NOT A THEN
96          FAILED ("IMPROPER VALUE FOR 'CONSTRAINED OUTSIDE THE " &
97                  "PACKAGE DECLARING THE PRIVATE TYPE - 1");
98     END IF;
99
100     IF B THEN
101          FAILED ("IMPROPER VALUE FOR 'CONSTRAINED OUTSIDE THE " &
102                  "PACKAGE DECLARING THE PRIVATE TYPE - 2");
103     END IF;
104
105     RESULT;
106END C74208B;
107