-- C46051A.ADA
|
-- C46051A.ADA
|
|
|
-- Grant of Unlimited Rights
|
-- Grant of Unlimited Rights
|
--
|
--
|
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
|
-- 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
|
-- 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 in the software and documentation contained herein.
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- this public release, the Government intends to confer upon all
|
-- this public release, the Government intends to confer upon all
|
-- recipients unlimited rights equal to those held by the Government.
|
-- recipients unlimited rights equal to those held by the Government.
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- released technical data and computer software in whole or in part, in
|
-- 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
|
-- any manner and for any purpose whatsoever, and to have or permit others
|
-- to do so.
|
-- to do so.
|
--
|
--
|
-- DISCLAIMER
|
-- DISCLAIMER
|
--
|
--
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
--*
|
--*
|
-- CHECK THAT ENUMERATION, RECORD, ACCESS, PRIVATE, AND TASK VALUES CAN
|
-- CHECK THAT ENUMERATION, RECORD, ACCESS, PRIVATE, AND TASK VALUES CAN
|
-- BE CONVERTED IF THE OPERAND AND TARGET TYPES ARE RELATED BY
|
-- BE CONVERTED IF THE OPERAND AND TARGET TYPES ARE RELATED BY
|
-- DERIVATION.
|
-- DERIVATION.
|
|
|
-- R.WILLIAMS 9/8/86
|
-- R.WILLIAMS 9/8/86
|
|
|
WITH REPORT; USE REPORT;
|
WITH REPORT; USE REPORT;
|
PROCEDURE C46051A IS
|
PROCEDURE C46051A IS
|
|
|
BEGIN
|
BEGIN
|
TEST ( "C46051A", "CHECK THAT ENUMERATION, RECORD, ACCESS, " &
|
TEST ( "C46051A", "CHECK THAT ENUMERATION, RECORD, ACCESS, " &
|
"PRIVATE, AND TASK VALUES CAN BE CONVERTED " &
|
"PRIVATE, AND TASK VALUES CAN BE CONVERTED " &
|
"IF THE OPERAND AND TARGET TYPES ARE " &
|
"IF THE OPERAND AND TARGET TYPES ARE " &
|
"RELATED BY DERIVATION" );
|
"RELATED BY DERIVATION" );
|
|
|
DECLARE
|
DECLARE
|
TYPE ENUM IS (A, AB, ABC, ABCD);
|
TYPE ENUM IS (A, AB, ABC, ABCD);
|
E : ENUM := ABC;
|
E : ENUM := ABC;
|
|
|
TYPE ENUM1 IS NEW ENUM;
|
TYPE ENUM1 IS NEW ENUM;
|
E1 : ENUM1 := ENUM1'VAL (IDENT_INT (2));
|
E1 : ENUM1 := ENUM1'VAL (IDENT_INT (2));
|
|
|
TYPE ENUM2 IS NEW ENUM;
|
TYPE ENUM2 IS NEW ENUM;
|
E2 : ENUM2 := ABC;
|
E2 : ENUM2 := ABC;
|
|
|
TYPE NENUM1 IS NEW ENUM1;
|
TYPE NENUM1 IS NEW ENUM1;
|
NE : NENUM1 := NENUM1'VAL (IDENT_INT (2));
|
NE : NENUM1 := NENUM1'VAL (IDENT_INT (2));
|
BEGIN
|
BEGIN
|
IF ENUM (E) /= E THEN
|
IF ENUM (E) /= E THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM (E)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM (E)'" );
|
END IF;
|
END IF;
|
|
|
IF ENUM (E1) /= E THEN
|
IF ENUM (E1) /= E THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM (E1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM (E1)'" );
|
END IF;
|
END IF;
|
|
|
IF ENUM1 (E2) /= E1 THEN
|
IF ENUM1 (E2) /= E1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM1 (E2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM1 (E2)'" );
|
END IF;
|
END IF;
|
|
|
IF ENUM2 (NE) /= E2 THEN
|
IF ENUM2 (NE) /= E2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM2 (NE)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ENUM2 (NE)'" );
|
END IF;
|
END IF;
|
|
|
IF NENUM1 (E) /= NE THEN
|
IF NENUM1 (E) /= NE THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NENUM (E)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NENUM (E)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"ENUMERATION TYPES" );
|
"ENUMERATION TYPES" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TYPE REC IS
|
TYPE REC IS
|
RECORD
|
RECORD
|
NULL;
|
NULL;
|
END RECORD;
|
END RECORD;
|
|
|
R : REC;
|
R : REC;
|
|
|
TYPE REC1 IS NEW REC;
|
TYPE REC1 IS NEW REC;
|
R1 : REC1;
|
R1 : REC1;
|
|
|
TYPE REC2 IS NEW REC;
|
TYPE REC2 IS NEW REC;
|
R2 : REC2;
|
R2 : REC2;
|
|
|
TYPE NREC1 IS NEW REC1;
|
TYPE NREC1 IS NEW REC1;
|
NR : NREC1;
|
NR : NREC1;
|
BEGIN
|
BEGIN
|
IF REC (R) /= R THEN
|
IF REC (R) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'REC (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'REC (R)'" );
|
END IF;
|
END IF;
|
|
|
IF REC (R1) /= R THEN
|
IF REC (R1) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'REC (R1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'REC (R1)'" );
|
END IF;
|
END IF;
|
|
|
IF REC1 (R2) /= R1 THEN
|
IF REC1 (R2) /= R1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'REC1 (R2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'REC1 (R2)'" );
|
END IF;
|
END IF;
|
|
|
IF REC2 (NR) /= R2 THEN
|
IF REC2 (NR) /= R2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'REC2 (NR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'REC2 (NR)'" );
|
END IF;
|
END IF;
|
|
|
IF NREC1 (R) /= NR THEN
|
IF NREC1 (R) /= NR THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NREC (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NREC (R)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"RECORD TYPES" );
|
"RECORD TYPES" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TYPE REC (D : INTEGER) IS
|
TYPE REC (D : INTEGER) IS
|
RECORD
|
RECORD
|
NULL;
|
NULL;
|
END RECORD;
|
END RECORD;
|
|
|
SUBTYPE CREC IS REC (3);
|
SUBTYPE CREC IS REC (3);
|
R : CREC;
|
R : CREC;
|
|
|
TYPE CREC1 IS NEW REC (3);
|
TYPE CREC1 IS NEW REC (3);
|
R1 : CREC1;
|
R1 : CREC1;
|
|
|
TYPE CREC2 IS NEW REC (3);
|
TYPE CREC2 IS NEW REC (3);
|
R2 : CREC2;
|
R2 : CREC2;
|
|
|
TYPE NCREC1 IS NEW CREC1;
|
TYPE NCREC1 IS NEW CREC1;
|
NR : NCREC1;
|
NR : NCREC1;
|
BEGIN
|
BEGIN
|
IF CREC (R) /= R THEN
|
IF CREC (R) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CREC (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CREC (R)'" );
|
END IF;
|
END IF;
|
|
|
IF CREC (R1) /= R THEN
|
IF CREC (R1) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CREC (R1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CREC (R1)'" );
|
END IF;
|
END IF;
|
|
|
IF CREC1 (R2) /= R1 THEN
|
IF CREC1 (R2) /= R1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CREC1 (R2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CREC1 (R2)'" );
|
END IF;
|
END IF;
|
|
|
IF CREC2 (NR) /= R2 THEN
|
IF CREC2 (NR) /= R2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CREC2 (NR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CREC2 (NR)'" );
|
END IF;
|
END IF;
|
|
|
IF NCREC1 (R) /= NR THEN
|
IF NCREC1 (R) /= NR THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NCREC (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NCREC (R)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"RECORD TYPES WITH DISCRIMINANTS" );
|
"RECORD TYPES WITH DISCRIMINANTS" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TYPE REC IS
|
TYPE REC IS
|
RECORD
|
RECORD
|
NULL;
|
NULL;
|
END RECORD;
|
END RECORD;
|
|
|
TYPE ACCREC IS ACCESS REC;
|
TYPE ACCREC IS ACCESS REC;
|
AR : ACCREC;
|
AR : ACCREC;
|
|
|
TYPE ACCREC1 IS NEW ACCREC;
|
TYPE ACCREC1 IS NEW ACCREC;
|
AR1 : ACCREC1;
|
AR1 : ACCREC1;
|
|
|
TYPE ACCREC2 IS NEW ACCREC;
|
TYPE ACCREC2 IS NEW ACCREC;
|
AR2 : ACCREC2;
|
AR2 : ACCREC2;
|
|
|
TYPE NACCREC1 IS NEW ACCREC1;
|
TYPE NACCREC1 IS NEW ACCREC1;
|
NAR : NACCREC1;
|
NAR : NACCREC1;
|
|
|
FUNCTION F (A : ACCREC) RETURN INTEGER IS
|
FUNCTION F (A : ACCREC) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (0);
|
RETURN IDENT_INT (0);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : ACCREC1) RETURN INTEGER IS
|
FUNCTION F (A : ACCREC1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (1);
|
RETURN IDENT_INT (1);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : ACCREC2) RETURN INTEGER IS
|
FUNCTION F (A : ACCREC2) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (2);
|
RETURN IDENT_INT (2);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : NACCREC1) RETURN INTEGER IS
|
FUNCTION F (A : NACCREC1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (3);
|
RETURN IDENT_INT (3);
|
END F;
|
END F;
|
|
|
BEGIN
|
BEGIN
|
IF F (ACCREC (AR)) /= 0 THEN
|
IF F (ACCREC (AR)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR)'" );
|
END IF;
|
END IF;
|
|
|
IF F (ACCREC (AR1)) /= 0 THEN
|
IF F (ACCREC (AR1)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC (AR1)'" );
|
END IF;
|
END IF;
|
|
|
IF F (ACCREC1 (AR2)) /= 1 THEN
|
IF F (ACCREC1 (AR2)) /= 1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC1 (AR2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC1 (AR2)'" );
|
END IF;
|
END IF;
|
|
|
IF F (ACCREC2 (NAR)) /= 2 THEN
|
IF F (ACCREC2 (NAR)) /= 2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC2 (NAR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'ACCREC2 (NAR)'" );
|
END IF;
|
END IF;
|
|
|
IF F (NACCREC1 (AR)) /= 3 THEN
|
IF F (NACCREC1 (AR)) /= 3 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NACCREC (AR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NACCREC (AR)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"ACCESS TYPES" );
|
"ACCESS TYPES" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TYPE REC (D : INTEGER) IS
|
TYPE REC (D : INTEGER) IS
|
RECORD
|
RECORD
|
NULL;
|
NULL;
|
END RECORD;
|
END RECORD;
|
|
|
TYPE ACCR IS ACCESS REC;
|
TYPE ACCR IS ACCESS REC;
|
|
|
SUBTYPE CACCR IS ACCR (3);
|
SUBTYPE CACCR IS ACCR (3);
|
AR : CACCR;
|
AR : CACCR;
|
|
|
TYPE CACCR1 IS NEW ACCR (3);
|
TYPE CACCR1 IS NEW ACCR (3);
|
AR1 : CACCR1;
|
AR1 : CACCR1;
|
|
|
TYPE CACCR2 IS NEW ACCR (3);
|
TYPE CACCR2 IS NEW ACCR (3);
|
AR2 : CACCR2;
|
AR2 : CACCR2;
|
|
|
TYPE NCACCR1 IS NEW CACCR1;
|
TYPE NCACCR1 IS NEW CACCR1;
|
NAR : NCACCR1;
|
NAR : NCACCR1;
|
|
|
FUNCTION F (A : CACCR) RETURN INTEGER IS
|
FUNCTION F (A : CACCR) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (0);
|
RETURN IDENT_INT (0);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : CACCR1) RETURN INTEGER IS
|
FUNCTION F (A : CACCR1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (1);
|
RETURN IDENT_INT (1);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : CACCR2) RETURN INTEGER IS
|
FUNCTION F (A : CACCR2) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (2);
|
RETURN IDENT_INT (2);
|
END F;
|
END F;
|
|
|
FUNCTION F (A : NCACCR1) RETURN INTEGER IS
|
FUNCTION F (A : NCACCR1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (3);
|
RETURN IDENT_INT (3);
|
END F;
|
END F;
|
|
|
BEGIN
|
BEGIN
|
IF F (CACCR (AR)) /= 0 THEN
|
IF F (CACCR (AR)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR)'" );
|
END IF;
|
END IF;
|
|
|
IF F (CACCR (AR1)) /= 0 THEN
|
IF F (CACCR (AR1)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR (AR1)'" );
|
END IF;
|
END IF;
|
|
|
IF F (CACCR1 (AR2)) /= 1 THEN
|
IF F (CACCR1 (AR2)) /= 1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR1 (AR2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR1 (AR2)'" );
|
END IF;
|
END IF;
|
|
|
IF F (CACCR2 (NAR)) /= 2 THEN
|
IF F (CACCR2 (NAR)) /= 2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR2 (NAR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'CACCR2 (NAR)'" );
|
END IF;
|
END IF;
|
|
|
IF F (NCACCR1 (AR)) /= 3 THEN
|
IF F (NCACCR1 (AR)) /= 3 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NCACCR (AR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NCACCR (AR)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"CONSTRAINED ACCESS TYPES" );
|
"CONSTRAINED ACCESS TYPES" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
PACKAGE PKG1 IS
|
PACKAGE PKG1 IS
|
TYPE PRIV IS PRIVATE;
|
TYPE PRIV IS PRIVATE;
|
PRIVATE
|
PRIVATE
|
TYPE PRIV IS
|
TYPE PRIV IS
|
RECORD
|
RECORD
|
NULL;
|
NULL;
|
END RECORD;
|
END RECORD;
|
END PKG1;
|
END PKG1;
|
|
|
USE PKG1;
|
USE PKG1;
|
|
|
PACKAGE PKG2 IS
|
PACKAGE PKG2 IS
|
R : PRIV;
|
R : PRIV;
|
|
|
TYPE PRIV1 IS NEW PRIV;
|
TYPE PRIV1 IS NEW PRIV;
|
R1 : PRIV1;
|
R1 : PRIV1;
|
|
|
TYPE PRIV2 IS NEW PRIV;
|
TYPE PRIV2 IS NEW PRIV;
|
R2 : PRIV2;
|
R2 : PRIV2;
|
END PKG2;
|
END PKG2;
|
|
|
USE PKG2;
|
USE PKG2;
|
|
|
PACKAGE PKG3 IS
|
PACKAGE PKG3 IS
|
TYPE NPRIV1 IS NEW PRIV1;
|
TYPE NPRIV1 IS NEW PRIV1;
|
NR : NPRIV1;
|
NR : NPRIV1;
|
END PKG3;
|
END PKG3;
|
|
|
USE PKG3;
|
USE PKG3;
|
BEGIN
|
BEGIN
|
IF PRIV (R) /= R THEN
|
IF PRIV (R) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV (R)'" );
|
END IF;
|
END IF;
|
|
|
IF PRIV (R1) /= R THEN
|
IF PRIV (R1) /= R THEN
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV (R1)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV (R1)'" );
|
END IF;
|
END IF;
|
|
|
IF PRIV1 (R2) /= R1 THEN
|
IF PRIV1 (R2) /= R1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV1 (R2)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV1 (R2)'" );
|
END IF;
|
END IF;
|
|
|
IF PRIV2 (NR) /= R2 THEN
|
IF PRIV2 (NR) /= R2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV2 (NR)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'PRIV2 (NR)'" );
|
END IF;
|
END IF;
|
|
|
IF NPRIV1 (R) /= NR THEN
|
IF NPRIV1 (R) /= NR THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NPRIV (R)'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NPRIV (R)'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"PRIVATE TYPES" );
|
"PRIVATE TYPES" );
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TASK TYPE TK;
|
TASK TYPE TK;
|
T : TK;
|
T : TK;
|
|
|
TYPE TK1 IS NEW TK;
|
TYPE TK1 IS NEW TK;
|
T1 : TK1;
|
T1 : TK1;
|
|
|
TYPE TK2 IS NEW TK;
|
TYPE TK2 IS NEW TK;
|
T2 : TK2;
|
T2 : TK2;
|
|
|
TYPE NTK1 IS NEW TK1;
|
TYPE NTK1 IS NEW TK1;
|
NT : NTK1;
|
NT : NTK1;
|
|
|
TASK BODY TK IS
|
TASK BODY TK IS
|
BEGIN
|
BEGIN
|
NULL;
|
NULL;
|
END;
|
END;
|
|
|
FUNCTION F (T : TK) RETURN INTEGER IS
|
FUNCTION F (T : TK) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (0);
|
RETURN IDENT_INT (0);
|
END F;
|
END F;
|
|
|
FUNCTION F (T : TK1) RETURN INTEGER IS
|
FUNCTION F (T : TK1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (1);
|
RETURN IDENT_INT (1);
|
END F;
|
END F;
|
|
|
FUNCTION F (T : TK2) RETURN INTEGER IS
|
FUNCTION F (T : TK2) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (2);
|
RETURN IDENT_INT (2);
|
END F;
|
END F;
|
|
|
FUNCTION F (T : NTK1) RETURN INTEGER IS
|
FUNCTION F (T : NTK1) RETURN INTEGER IS
|
BEGIN
|
BEGIN
|
RETURN IDENT_INT (3);
|
RETURN IDENT_INT (3);
|
END F;
|
END F;
|
|
|
BEGIN
|
BEGIN
|
IF F (TK (T)) /= 0 THEN
|
IF F (TK (T)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'TK (T))'" );
|
FAILED ( "INCORRECT CONVERSION OF 'TK (T))'" );
|
END IF;
|
END IF;
|
|
|
IF F (TK (T1)) /= 0 THEN
|
IF F (TK (T1)) /= 0 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'TK (T1))'" );
|
FAILED ( "INCORRECT CONVERSION OF 'TK (T1))'" );
|
END IF;
|
END IF;
|
|
|
IF F (TK1 (T2)) /= 1 THEN
|
IF F (TK1 (T2)) /= 1 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'TK1 (T2))'" );
|
FAILED ( "INCORRECT CONVERSION OF 'TK1 (T2))'" );
|
END IF;
|
END IF;
|
|
|
IF F (TK2 (NT)) /= 2 THEN
|
IF F (TK2 (NT)) /= 2 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'TK2 (NT))'" );
|
FAILED ( "INCORRECT CONVERSION OF 'TK2 (NT))'" );
|
END IF;
|
END IF;
|
|
|
IF F (NTK1 (T)) /= 3 THEN
|
IF F (NTK1 (T)) /= 3 THEN
|
FAILED ( "INCORRECT CONVERSION OF 'NTK (T))'" );
|
FAILED ( "INCORRECT CONVERSION OF 'NTK (T))'" );
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
FAILED ( "EXCEPTION RAISED DURING CONVERSION OF " &
|
"TASK TYPES" );
|
"TASK TYPES" );
|
END;
|
END;
|
|
|
RESULT;
|
RESULT;
|
END C46051A;
|
END C46051A;
|
|
|