blob: ba234648bc2d760732669c9257cfbdcc1daf1f73 [file] [log] [blame]
-- CC3126A.ADA
-- Grant of Unlimited Rights
--
-- 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
-- unlimited rights in the software and documentation contained herein.
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
-- this public release, the Government intends to confer upon all
-- recipients unlimited rights equal to those held by the Government.
-- These rights include rights to use, duplicate, release or disclose the
-- 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
-- to do so.
--
-- DISCLAIMER
--
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
-- PARTICULAR PURPOSE OF SAID MATERIAL.
--*
-- OBJECTIVE:
-- CHECK THAT CONSTRAINT_ERROR IS RAISED IF AND ONLY IF THE ACTUAL
-- PARAMETER DOES NOT HAVE THE SAME NUMBER OF COMPONENTS
-- (PER DIMENSION) AS THE FORMAL PARAMETER. ALSO THAT FOR NULL
-- ARRAYS NO ERROR IS RAISED.
-- HISTORY:
-- LB 12/02/86
-- DWC 08/11/87 CHANGED HEADING FORMAT.
-- RJW 10/26/89 INITIALIZED VARIABLE H.
WITH REPORT; USE REPORT;
PROCEDURE CC3126A IS
BEGIN
TEST ("CC3126A","GENERIC ACTUAL PARAMETER MUST HAVE THE SAME "&
"NUMBER OF COMPONENTS (PER DIMENSION) AS THE "&
"GENERIC FORMAL PARMETER");
BEGIN
DECLARE
TYPE ARRY1 IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE ARR IS ARRY1 (1 .. 10);
GENERIC
GARR : IN ARR;
PACKAGE P IS
NARR : ARR := GARR;
END P;
BEGIN
BEGIN
DECLARE
X : ARRY1 (2 .. 11) := (2 .. 11 => 0);
PACKAGE Q IS NEW P(X);
BEGIN
Q.NARR(2) := 1;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 1");
END;
BEGIN
DECLARE
S : ARRY1 (1 .. 11) := (1 .. 11 => 0);
PACKAGE R IS NEW P(S);
BEGIN
FAILED ("EXCEPTION NOT RAISED 2");
R.NARR(1) := IDENT_INT(R.NARR(1));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 2");
END;
BEGIN
DECLARE
G : ARRY1 (1 .. 9) := (1 .. 9 => 0);
PACKAGE K IS NEW P(G);
BEGIN
FAILED ("EXCEPTION NOT RAISED 3");
IF EQUAL(3,3) THEN
K.NARR(1) := IDENT_INT(K.NARR(1));
END IF;
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 3");
END;
BEGIN
DECLARE
S : ARRY1 (1 .. 11) := (1 .. 11 => 0);
PACKAGE F IS NEW P(S(2 .. 11));
BEGIN
F.NARR(2) := IDENT_INT(F.NARR(2));
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 4");
END;
END;
DECLARE
SUBTYPE STR IS STRING(1 .. 20);
GENERIC
GVAR : IN STR;
PACKAGE M IS
NVAR : STR := GVAR;
END M;
BEGIN
BEGIN
DECLARE
L : STRING (2 .. 15);
PACKAGE U IS NEW M(L);
BEGIN
FAILED ("EXCEPTION NOT RAISED 5");
U.NVAR(2) := IDENT_CHAR(U.NVAR(2));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 5");
END;
BEGIN
DECLARE
H : STRING (1 .. 20) := (OTHERS => 'R');
PACKAGE J IS NEW M(H);
BEGIN
IF EQUAL(3,3) THEN
J.NVAR(2) := IDENT_CHAR(J.NVAR(2));
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 6");
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("UNEXPECTED ERROR RAISED STRINGS");
END;
DECLARE
TYPE NARRY IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE SNARRY IS NARRY (2 .. 0);
GENERIC
RD : IN SNARRY;
PACKAGE JA IS
CD : SNARRY := RD;
END JA;
BEGIN
BEGIN
DECLARE
AD : NARRY(1 .. 0);
PACKAGE PA IS NEW JA(AD);
BEGIN
IF NOT EQUAL(0,PA.CD'LAST) THEN
FAILED ("PARAMETER ATTRIBUTE INCORRECT");
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 7");
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED FOR ARRAYS "&
"WITH NULL RANGES");
END;
END;
RESULT;
END CC3126A;