WITH REPORT; USE REPORT;
PROCEDURE CC3127A IS
TYPE INT IS RANGE 1 .. 20;
BEGIN
TEST ("CC3127A","CORRESPONDING DISCRIMINANTS OF THE GENERIC "&
"ACTUAL PARAMETER AND THE GENERIC FORMAL "&
"PARAMETER MUST HAVE THE SAME VALUES.");
BEGIN
DECLARE
TYPE REC (A : INT) IS
RECORD
RINT : POSITIVE := 2;
END RECORD;
SUBTYPE CON_REC IS REC(4);
GENERIC
GREC : IN CON_REC;
PACKAGE PA IS
NREC : CON_REC := GREC;
END PA;
BEGIN
BEGIN
DECLARE
RVAR : REC(3);
PACKAGE AB IS NEW PA(RVAR);
BEGIN
FAILED ("EXCEPTION NOT RAISED 1");
AB.NREC.RINT := IDENT_INT(AB.NREC.RINT);
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 1");
END;
BEGIN
DECLARE
SVAR : REC(4);
PACKAGE CD IS NEW PA(SVAR);
BEGIN
IF EQUAL(3,3) THEN
CD.NREC.RINT := IDENT_INT(CD.NREC.RINT);
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 2");
END;
END;
DECLARE
PACKAGE EF IS
TYPE PRI_REC (G : INT) IS PRIVATE;
PRIVATE
TYPE PRI_REC (G : INT) IS
RECORD
PINT : POSITIVE := 2;
END RECORD;
END EF;
SUBTYPE CPRI_REC IS EF.PRI_REC(4);
GENERIC
GEN_REC : IN CPRI_REC;
PACKAGE GH IS
NGEN_REC : CPRI_REC := GEN_REC;
END GH;
BEGIN
BEGIN
DECLARE
PVAR : EF.PRI_REC(4);
PACKAGE LM IS NEW GH(PVAR);
BEGIN
IF EQUAL(3,3) THEN
LM.NGEN_REC := LM.NGEN_REC;
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 3");
END;
BEGIN
DECLARE
PTVAR : EF.PRI_REC(5);
PACKAGE PAC IS NEW GH(PTVAR);
BEGIN
FAILED ("EXCEPTION NOT RAISED 4");
IF EQUAL(3,5) THEN
COMMENT ("DISCRIMINANT OF PAC.NGEN_REC IS "&
INT'IMAGE(PAC.NGEN_REC.G));
END IF;
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 4");
END;
END;
END;
RESULT;
END CC3127A;