WITH REPORT;
PROCEDURE C85013A IS
USE REPORT;
BEGIN
TEST("C85013A","CHECK THAT A SUBPROGRAM CAN BE RENAMED AND " &
"THAT THE NEW NAMES/DEFAULTS ARE USED WITH " &
"THE CONSTRAINTS ASSOCIATED WITH THE RENAMED" &
" ENTITY");
DECLARE
TYPE TA IS ARRAY(1 .. 5) OF INTEGER;
FUNCTION PROC1 (A : INTEGER := 1;
B : TA := (1 .. 5 => 1)) RETURN INTEGER;
FUNCTION PROCA (C : INTEGER := 1;
D : TA := (1 .. 5 => 1)) RETURN INTEGER
RENAMES PROC1;
FUNCTION PROCB (B : INTEGER := 1;
A : TA := (1 .. 5 => 1)) RETURN INTEGER
RENAMES PROC1;
FUNCTION PROCC (A : INTEGER := 2;
B : TA := (1, 2, 3, 4, 5)) RETURN INTEGER
RENAMES PROC1;
FUNCTION PROCD (C : INTEGER := 2;
D : TA := (1, 2, 3, 4, 5))RETURN INTEGER
RENAMES PROC1;
FUNCTION PROC1 (A : INTEGER := 1;
B : TA := (1 .. 5 => 1)) RETURN INTEGER IS
BEGIN
FOR I IN 1 .. 5 LOOP
IF A = B(I) THEN
RETURN I;
END IF;
END LOOP;
RETURN 0;
END PROC1;
BEGIN
IF PROC1 /= 1 THEN
FAILED ("CASE A : PARAMETERS NOT PROPERLY INITIALIZED");
END IF;
IF PROC1(A => 2) /= 0 THEN
FAILED ("CASE A : INCORRECT RESULT");
END IF;
IF PROCA /= 1 THEN
FAILED ("CASE A1 : INCORRECT RESULT (DEFAULT)");
END IF;
IF PROCA(D => (5, 4, 3, 2, 1)) /= 5 THEN
FAILED ("CASE A1 : INCORRECT RESULT");
END IF;
IF PROCB /= 1 THEN
FAILED ("CASE A1 : INCORRECT RESULT (DEFAULT)");
END IF;
IF PROCB(A => (5, 4, 3, 2, 1), B => 2) /= 4 THEN
FAILED ("CASE A1 : INCORRECT RESULT ");
END IF;
IF PROCC /= 2 THEN
FAILED ("CASE A2 : INCORRECT RESULT (DEFAULT)");
END IF;
IF PROCC(3) /= 3 THEN
FAILED ("CASE A2 : INCORRECT RESULT ");
END IF;
IF PROCD /= 2 THEN
FAILED ("CASE A2 : INCORRECT RESULT (DEFAULT)");
END IF;
IF PROCD(4) /= 4 THEN
FAILED ("CASE A2 : INCORRECT RESULT ");
END IF;
END;
DECLARE
TYPE TA IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE STA1 IS TA(1 .. 5);
SUBTYPE STA2 IS TA(11 .. 15);
PROCEDURE PROC1 (A : STA1;
ID : STRING);
PROCEDURE PROC2 (A : STA2;
ID : STRING) RENAMES PROC1;
PROCEDURE PROC1 (A : STA1;
ID : STRING) IS
BEGIN
IF A'FIRST /= IDENT_INT(1) THEN
FAILED ("CASE B : INCORRECT LOWER BOUND " &
"GENERATED BY " & ID);
END IF;
IF A'LAST /= IDENT_INT(5) THEN
FAILED ("CASE B : INCORRECT UPPER BOUND " &
"GENERATED BY " & ID);
END IF;
END PROC1;
BEGIN
PROC1 ((1, 2, 3, 4, 5),"PROC1");
PROC2 ((6, 7, 8, 9, 10),"PROC2");
END;
RESULT;
END C85013A;