WITH REPORT; USE REPORT;
PROCEDURE C74208B IS
PACKAGE P IS
TYPE REC (D : INTEGER := 0) IS PRIVATE;
R1 : CONSTANT REC;
TYPE REC2 IS RECORD
COMP : BOOLEAN := R1'CONSTRAINED;
END RECORD;
PRIVATE
TYPE REC (D : INTEGER := 0) IS RECORD
NULL;
END RECORD;
R1 : CONSTANT REC := (D => 5);
R2 : REC := (D => 0);
R2A : REC(3);
R2CON : CONSTANT REC := (D => 3);
C : BOOLEAN := R2'CONSTRAINED;
D : BOOLEAN := R2A'CONSTRAINED;
E : BOOLEAN := R2CON'CONSTRAINED;
END P;
REC2_VAR : P.REC2;
R3 : P.REC(0);
R3A : P.REC;
A : BOOLEAN := R3'CONSTRAINED;
B : BOOLEAN := R3A'CONSTRAINED;
PACKAGE BODY P IS
BEGIN
TEST ("C74208B", "CHECK THAT 'CONSTRAINED FOR OBJECTS OF A " &
"PRIVATE TYPE WITH VISIBLE DISCRIMINANTS " &
"IS AVAILABLE OUTSIDE THE PACKAGE " &
"DECLARING THE TYPE AND IS AVAILABLE " &
"BEFORE AND AFTER THE FULL DECLARATION");
IF NOT REC2_VAR.COMP THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED BEFORE THE " &
"FULL DECLARATION OF THE PRIVATE TYPE");
END IF;
IF C THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
"FULL DECLARATION OF THE PRIVATE TYPE - 1");
END IF;
IF NOT D THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
"FULL DECLARATION OF THE PRIVATE TYPE - 2");
END IF;
IF NOT E THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED AFTER THE " &
"FULL DECLARATION OF THE PRIVATE TYPE - 3");
END IF;
END P;
BEGIN
IF NOT A THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED OUTSIDE THE " &
"PACKAGE DECLARING THE PRIVATE TYPE - 1");
END IF;
IF B THEN
FAILED ("IMPROPER VALUE FOR 'CONSTRAINED OUTSIDE THE " &
"PACKAGE DECLARING THE PRIVATE TYPE - 2");
END IF;
RESULT;
END C74208B;