WITH REPORT;
PROCEDURE C61008A IS
USE REPORT;
BEGIN
TEST ("C61008A", "CHECK THAT CONSTRAINT_ERROR IS NOT RAISED IF " &
"AN INITIALIZATION VALUE DOES NOT SATISFY " &
"CONSTRAINTS ON A FORMAL PARAMETER");
DECLARE
PROCEDURE PA (I1, I2 : INTEGER) IS
TYPE A1 IS ARRAY (1..I1,1..I2) OF INTEGER;
PROCEDURE PA1 (A : A1 := ((1,0),(0,1))) IS
BEGIN
FAILED ("BODY OF PA1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PA1");
END PA1;
BEGIN
PA1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - PA1");
END PA;
BEGIN PA (IDENT_INT(1), IDENT_INT(10));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO PA");
END;
DECLARE
PROCEDURE PB (I1, I2 : INTEGER) IS
SUBTYPE INT IS INTEGER RANGE I1..I2;
PROCEDURE PB1 (I : INT := -1) IS
BEGIN
FAILED ("BODY OF PB1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PB1");
END PB1;
BEGIN
PB1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - PB1");
END PB;
BEGIN PB (IDENT_INT(0), IDENT_INT(63));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO PB");
END;
DECLARE
PROCEDURE PC (I1, I2 : INTEGER) IS
TYPE AR1 IS ARRAY (1..3) OF INTEGER RANGE I1..I2;
TYPE REC IS
RECORD
I : INTEGER RANGE I1..I2;
A : AR1 ;
END RECORD;
PROCEDURE PC1 (R : REC := (-3,(0,2,3))) IS
BEGIN
FAILED ("BODY OF PC1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PC1");
END PC1;
BEGIN
PC1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - PC1");
END PC;
BEGIN PC (IDENT_INT(1), IDENT_INT(3));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO PC");
END;
DECLARE
PROCEDURE P1D (I1, I2 : INTEGER) IS
TYPE A1 IS ARRAY (1..2,1..2) OF INTEGER RANGE I1..I2;
PROCEDURE P1D1 (A : A1 := ((1,-1),(1,2))) IS
BEGIN
FAILED ("BODY OF P1D1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN P1D1");
END P1D1;
BEGIN
P1D1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - P1D1");
END P1D;
BEGIN P1D (IDENT_INT(1), IDENT_INT(2));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO P1D");
END;
DECLARE
PROCEDURE P2D (I1, I2 : INTEGER) IS
TYPE A1 IS ARRAY (1..2,1..2) OF INTEGER RANGE I1..I2;
PROCEDURE P2D1 (A : A1 := (3..4 => (1,2))) IS
BEGIN
FAILED ("BODY OF P2D1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN P2D1");
END P2D1;
BEGIN
P2D1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - P2D1");
END P2D;
BEGIN P2D (IDENT_INT(1), IDENT_INT(2));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO P2D");
END;
DECLARE
PROCEDURE PE (I1, I2 : INTEGER) IS
SUBTYPE INT IS INTEGER RANGE 0..10;
TYPE ARR IS ARRAY (1..3) OF INT;
TYPE REC (I : INT) IS
RECORD
A : ARR;
END RECORD;
SUBTYPE REC4 IS REC(I1);
PROCEDURE PE1 (R : REC4 := (3,(1,2,3))) IS
BEGIN
FAILED ("BODY OF PE1 EXECUTED");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PE1");
END PE1;
BEGIN
PE1;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - PE1");
END PE;
BEGIN PE (IDENT_INT(4), IDENT_INT(10));
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN CALL TO PE");
END;
RESULT;
END C61008A;