PACKAGE CA2011B0 IS
SUBTYPE T IS INTEGER RANGE -100 .. 100;
I : T := 0;
END CA2011B0;
WITH CA2011B0; USE CA2011B0;
PACKAGE CA2011B1 IS
PROCEDURE P1 (X : CA2011B0.T);
PROCEDURE P2 (X : T);
END CA2011B1;
WITH REPORT; USE REPORT;
PRAGMA ELABORATE (REPORT);
PACKAGE BODY CA2011B1 IS
PACKAGE CA2011BX RENAMES CA2011B0;
PROCEDURE P1 (X : T) IS SEPARATE;
PROCEDURE P2 (X : CA2011BX.T) IS SEPARATE;
END CA2011B1;
SEPARATE (CA2011B1)
PROCEDURE P1 (X : CA2011BX.T) IS
BEGIN
I := IDENT_INT(X);
END P1;
SEPARATE (CA2011B1)
PROCEDURE P2 (X : CA2011BX.T) IS
BEGIN
I := IDENT_INT(X);
END P2;
WITH REPORT; USE REPORT;
WITH CA2011B0, CA2011B1;
PROCEDURE CA2011B IS
PACKAGE P1 IS
SUBTYPE T IS INTEGER RANGE -100 .. 100;
END P1;
USE P1;
FUNCTION F1 RETURN P1.T;
FUNCTION F2 RETURN T;
PACKAGE P2 RENAMES P1;
FUNCTION F1 RETURN T IS SEPARATE;
FUNCTION F2 RETURN P2.T IS SEPARATE;
BEGIN
TEST ("CA2011B", "CHECK THAT FOR A SUBPROGRAM DECLARATION-STUB-" &
"BODY TRIPLE, THE DECLARATION-STUB AND STUB-" &
"BODY SPECIFICATIONS CAN CONFORM, BUT THE " &
"DECLARATON-BODY SPECIFICATIONS NEED NOT");
IF F1 /= IDENT_INT(100) THEN
FAILED ("INCORRECT RETURN VALUE FROM FUNCTION 1");
END IF;
IF F2 /= IDENT_INT(-100) THEN
FAILED ("INCORRECT RETURN VALUE FROM FUNCTION 2");
END IF;
CA2011B1.P1(3);
IF CA2011B0.I /= IDENT_INT(3) THEN
FAILED ("INCORRECT RETURN VALUE FROM PROCEDURE 1");
END IF;
CA2011B1.P2(4);
IF CA2011B0.I /= IDENT_INT(4) THEN
FAILED ("INCORRECT RETURN VALUE FROM PROCEDURE 2");
END IF;
RESULT;
END CA2011B;
SEPARATE (CA2011B)
FUNCTION F1 RETURN P2.T IS
BEGIN
RETURN 100;
END F1;
SEPARATE (CA2011B)
FUNCTION F2 RETURN P2.T IS
BEGIN
RETURN -100;
END F2;