URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/tags/gnu-src/gcc-4.5.1/gcc-4.5.1-or32-1.0rc1/gcc/testsuite/ada/acats/tests/c6
- from Rev 294 to Rev 338
- ↔ Reverse comparison
Rev 294 → Rev 338
/c64104j.ada
0,0 → 1,88
-- C64104J.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 UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (G) AFTER RETURN, OUT MODE, UNCONSTRAINED FORMAL, STATIC ONE |
-- DIMENSIONAL BOUNDS. |
|
-- HISTORY: |
-- JRK 03/18/81 CREATED ORIGINAL TEST. |
-- NL 10/13/81 |
-- BCB 11/12/87 CHANGED HEADING TO STANDARD FORMAT. ADDED CODE TO |
-- ENSURE THAT SUBPROGRAMS ARE ACTUALLY CALLED. |
|
WITH REPORT; |
PROCEDURE C64104J IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104J", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
TYPE A IS ACCESS STRING; |
|
CALLED : BOOLEAN := FALSE; |
|
V : A (1..3) := NEW STRING (1..3); |
|
PROCEDURE P (X : OUT A) IS |
BEGIN |
CALLED := TRUE; |
X := NEW STRING (2..3); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104J; |
/c64104k.ada
0,0 → 1,95
-- C64104K.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 UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (H) AFTER RETURN, OUT MODE, UNCONSTRAINED FORMAL, DYNAMIC |
-- RECORD DISCRIMINANT. |
|
-- HISTORY: |
-- JRK 03/18/81 CREATED ORIGINAL TEST. |
-- NL 10/13/81 |
-- SPS 10/26/82 |
-- BCB 11/12/87 CHANGED HEADING TO STANDARD FORMAT. ADDED CODE TO |
-- ENSURE THAT SUBPROGRAMS ARE ACTUALLY CALLED. |
|
WITH REPORT; |
PROCEDURE C64104K IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104K", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
TYPE ARR IS ARRAY (BOOLEAN RANGE <>) OF INTEGER; |
TYPE T (B : BOOLEAN := FALSE) IS |
RECORD |
I : INTEGER; |
A : ARR (FALSE..B); |
END RECORD; |
|
TYPE A IS ACCESS T; |
|
CALLED : BOOLEAN := FALSE; |
|
V : A (IDENT_BOOL(FALSE)) := NEW T (IDENT_BOOL(FALSE)); |
|
PROCEDURE P (X : OUT A) IS |
BEGIN |
CALLED := TRUE; |
X := NEW T (TRUE); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104K; |
/c64104l.ada
0,0 → 1,109
-- C64104L.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (I) AFTER RETURN, OUT MODE, CONSTRAINED FORMAL, STATIC |
-- PRIVATE DISCRIMINANTS. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104L IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104L", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
PACKAGE PKG IS |
TYPE E IS (E1, E2, E3); |
TYPE T (D : E := E1; B : BOOLEAN := FALSE) IS |
PRIVATE; |
PRIVATE |
TYPE ARR IS ARRAY (E RANGE <>) OF INTEGER; |
TYPE T (D : E := E1; B : BOOLEAN := FALSE) IS |
RECORD |
I : INTEGER; |
CASE B IS |
WHEN FALSE => |
J : INTEGER; |
WHEN TRUE => |
A : ARR (E1 .. D); |
END CASE; |
END RECORD; |
END PKG; |
USE PKG; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(E2, TRUE); |
V : A (E2, FALSE) := NEW T (E2, FALSE); |
|
ENTERED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : OUT SA ) IS |
BEGIN |
ENTERED := TRUE; |
X := NEW T (E2, TRUE); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("CONSTRAINT_ERROR RAISED BEFORE " & |
"CALL"); |
END IF; |
WHEN OTHERS => |
IF NOT ENTERED THEN |
FAILED ("OTHER EXCEPTION RAISED BEFORE CALL"); |
ELSE FAILED ("WRONG EXCEPTION RAISED AFTER " & |
"RETURN"); |
END IF; |
END; |
|
------------------------------------------------ |
|
RESULT; |
|
END C64104L; |
/c64104m.ada
0,0 → 1,95
-- C64104M.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (J) AFTER RETURN, OUT MODE, CONSTRAINED FORMAL, DYNAMIC TWO |
-- DIMENSIONAL BOUNDS. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104M IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104M", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
TYPE T IS ARRAY (INTEGER RANGE <>, |
CHARACTER RANGE <> |
) OF INTEGER; |
|
TYPE A IS ACCESS T; |
|
V : A (1..10, 'A'..'Z') := NEW T (1..10, 'A'..'Z'); |
|
ENTERED : BOOLEAN := FALSE; |
Y : CONSTANT CHARACTER := IDENT_CHAR('Y'); |
SUBTYPE SA IS A(1..10, 'A'..Y); |
PROCEDURE P (X : OUT SA ) IS |
BEGIN |
ENTERED := TRUE; |
X := NEW T (1..10, 'A'..IDENT_CHAR('Y')); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("CONSTRAINT_ERROR RAISED BEFORE " & |
"CALL"); |
END IF; |
WHEN OTHERS => |
IF NOT ENTERED THEN |
FAILED ("OTHER EXCEPTION RAISED BEFORE CALL"); |
ELSE FAILED ("WRONG EXCEPTION RAISED AFTER " & |
"RETURN"); |
END IF; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104M; |
/c64104n.ada
0,0 → 1,116
-- C64104N.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 AT THE PLACE OF THE CALL |
-- FOR THE CASE OF A PRIVATE TYPE IMPLEMENTED AS A SCALAR TYPE |
-- WHERE THE VALUE OF THE FORMAL PARAMETER DOES NOT BELONG TO THE |
-- SUBTYPE OF THE ACTUAL PARAMETER. |
|
-- HISTORY: |
-- DAVID A. TAFFS |
-- CPP 07/23/84 |
-- RDH 04/18/90 REVISED TO CHECK THAT SUBPROGRAM IS ACTUALLY |
-- CALLED. |
-- THS 09/21/90 REWORDED COMMENT STATING THAT THE TEST DOES NOT |
-- ACCEPT THE LITERAL INTERPRETATION OF 6.4.1(9). |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64104N IS |
|
BEGIN |
TEST ("C64104N", "CHECK THAT PRIVATE TYPE (SCALAR) RAISES " & |
"CONSTRAINT_ERROR WHEN ACTUAL AND FORMAL PARAMETER " & |
"BOUNDS DIFFER"); |
|
DECLARE |
|
CALLED : BOOLEAN := FALSE; |
|
PACKAGE P IS |
TYPE T IS PRIVATE; |
DC : CONSTANT T; |
|
GENERIC PACKAGE PP IS |
END PP; |
PRIVATE |
TYPE T IS NEW INTEGER; |
DC : CONSTANT T := -1; |
END P; |
|
PROCEDURE Q (X : IN OUT P.T) IS |
BEGIN |
CALLED := TRUE; |
X := P.DC; |
IF P. "=" (X, P.DC) THEN |
COMMENT("PROCEDURE Q WAS CALLED"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED("EXCEPTION RAISED INSIDE SUBPROGRAM"); |
END Q; |
|
GENERIC |
Y : IN OUT P.T; |
PACKAGE CALL IS |
END CALL; |
|
PACKAGE BODY CALL IS |
BEGIN |
Q (Y); |
END CALL; |
|
-- NOTE CALL HAS VARIABLE OF A PRIVATE TYPE AS AN OUT PARAMETER. |
-- THIS TEST DOES NOT ACCEPT THE LITERAL INTERPRETATION OF 6.4.1(9). |
-- REFER TO ADA IMPLEMENTOR'S GUIDE 6.4.1 SEMANTIC RAMIFICATION 19 |
-- AND AI-00025 FOR CLARIFICATION AS TO WHY THE LITERAL |
-- INTERPRETATION IS REJECTED. |
|
PACKAGE BODY P IS |
Z : T RANGE 0..1 := 0; |
PACKAGE BODY PP IS |
PACKAGE CALL_Q IS NEW CALL(Z); |
END PP; |
END P; |
|
BEGIN |
BEGIN |
DECLARE |
PACKAGE CALL_Q_NOW IS NEW P.PP; -- EXCEPTION |
BEGIN |
FAILED ("NO EXCEPTION RAISED"); |
END; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED("SUBPROGRAM Q WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED("WRONG EXCEPTION RAISED"); |
END; |
|
RESULT; |
|
END; |
END C64104N; |
/c64104o.ada
0,0 → 1,112
-- C64104O.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 AT THE PLACE OF THE CALL |
-- FOR THE CASE OF A PRIVATE TYPE IMPLEMENTED AS AN ACCESS TYPE WHERE |
-- THE ACTUAL BOUNDS OR DISCRIMINANTS OF THE DESIGNATED OBJECT DIFFER |
-- FROM THOSE OF THE FORMAL. |
|
-- HISTORY |
-- CPP 7/23/84 CREATED ORIGINAL TEST. |
-- DHH 8/31/87 ADDED COMMENT IN PROCEDURE Q SO THAT CODE WILL NOT BE |
-- OPTIMIZED OUT OF EXISTENCE. |
|
|
WITH REPORT; USE REPORT; |
PROCEDURE C64104O IS |
|
BEGIN |
|
TEST ("C64104O", "CHECK THAT PRIVATE TYPE (ACCESS) RAISES " & |
"CONSTRAINT_ERROR WHEN ACTUAL AND FORMAL PARAMETER BOUNDS " & |
"DIFFER"); |
|
DECLARE |
|
|
CALLED : BOOLEAN := FALSE; |
|
PACKAGE P IS |
TYPE T IS PRIVATE; |
DC : CONSTANT T; |
GENERIC PACKAGE PP IS |
END PP; |
PRIVATE |
TYPE T IS ACCESS STRING; |
DC : CONSTANT T := NEW STRING'("AAA"); |
END P; |
|
PROCEDURE Q (X : IN OUT P.T) IS |
|
BEGIN |
|
CALLED := TRUE; |
X := P.DC; |
IF P. "=" (X, P.DC) THEN |
COMMENT("PROCEDURE Q WAS CALLED"); |
END IF; |
|
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED INSIDE SUBPROGRAM"); |
END Q; |
|
GENERIC |
Y : IN OUT P.T; |
PACKAGE CALL IS |
END CALL; |
|
PACKAGE BODY CALL IS |
BEGIN |
Q(Y); |
END CALL; |
|
PACKAGE BODY P IS |
Z : T(1..5) := NEW STRING'("CCCCC"); |
PACKAGE BODY PP IS |
PACKAGE CALL_Q IS NEW CALL(Z); |
END PP; |
END P; |
|
BEGIN |
BEGIN |
DECLARE |
PACKAGE CALL_Q_NOW IS NEW P.PP; |
BEGIN |
FAILED ("NO EXCEPTION RAISED"); |
END; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM Q WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
RESULT; |
END; |
|
END C64104O; |
/c62004a.ada
0,0 → 1,64
-- C62004A.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. |
--* |
-- CHECK THAT ALIASING IS PERMITTED FOR PARAMETERS OF COMPOSITE TYPES, |
-- E.G., THAT A MATRIX ADDITION PROCEDURE CAN BE CALLED WITH THREE |
-- IDENTICAL ARGUMENTS. (NOTE: ALIASING MAY NOT WORK FOR ARGUMENTS |
-- TO ALL SUBROUTINES SINCE PARAMETER PASSING IS IMPLEMENTATION |
-- DEPENDENT. HOWEVER, THIS TEST IS NOT ERRONEOUS.) |
|
-- DAS 1/26/81 |
|
WITH REPORT; |
PROCEDURE C62004A IS |
|
USE REPORT; |
|
TYPE MATRIX IS ARRAY (1..3,1..3) OF INTEGER; |
|
A : MATRIX := ((1,2,3),(4,5,6),(7,8,9)); |
|
PROCEDURE MAT_ADD (X,Y : IN MATRIX; SUM : OUT MATRIX) IS |
BEGIN |
FOR I IN 1..3 LOOP |
FOR J IN 1..3 LOOP |
SUM(I,J) := X(I,J) + Y(I,J); |
END LOOP; |
END LOOP; |
END MAT_ADD; |
|
BEGIN |
|
TEST ("C62004A", "CHECK THAT ALIASING IS PERMITTED FOR" & |
" PARAMETERS OF COMPOSITE TYPES"); |
|
MAT_ADD (A, A, A); |
|
IF (A /= ((2,4,6),(8,10,12),(14,16,18))) THEN |
FAILED ("THE RESULT OF THE MATRIX ADDITION IS INCORRECT"); |
END IF; |
|
RESULT; |
|
END C62004A; |
/c64202a.ada
0,0 → 1,72
-- C64202A.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. |
--* |
-- CHECK THAT THE DEFAULT EXPRESSIONS OF FORMAL PARAMETERS ARE EVALUATED |
-- EACH TIME THEY ARE NEEDED. |
|
-- SPS 2/22/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64202A IS |
BEGIN |
|
TEST ("C64202A", "CHECK THAT THE DEFAULT EXPRESSION IS EVALUATED" & |
" EACH TIME IT IS NEEDED"); |
|
DECLARE |
X : INTEGER := 1; |
FUNCTION F RETURN INTEGER IS |
BEGIN |
X := X + 1; |
RETURN X; |
END F; |
|
PROCEDURE P (CALL : POSITIVE; X, Y : INTEGER := F) IS |
BEGIN |
IF CALL = 1 THEN |
IF X = Y OR Y /= 2 THEN |
FAILED ("DEFAULT NOT EVALUATED CORRECTLY - 1" & |
" X =" & INTEGER'IMAGE(X) & " Y =" & |
INTEGER'IMAGE(Y)); |
END IF; |
ELSIF CALL = 2 THEN |
IF X = Y OR |
NOT ((X = 3 AND Y = 4) OR (X = 4 AND Y = 3)) THEN |
FAILED ("DEFAULT NOT EVALUATED CORRECTLY - 2" & |
" X =" & INTEGER'IMAGE(X) & " Y =" & |
INTEGER'IMAGE(Y)); |
END IF; |
END IF; |
END P; |
|
BEGIN |
COMMENT ("FIRST CALL"); |
P (1, 3); |
COMMENT ("SECOND CALL"); |
P(2); |
END; |
|
RESULT; |
|
END C64202A; |
/c61008a.ada
0,0 → 1,266
-- C61008A.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS NOT RAISED IF THE DEFAULT VALUE |
-- FOR A FORMAL PARAMETER DOES NOT SATISFY THE CONSTRAINTS OF THE |
-- SUBTYPE_INDICATION WHEN THE DECLARATION IS ELABORATED, ONLY WHEN |
-- THE DEFAULT IS USED. |
|
-- SUBTESTS ARE: |
-- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND |
-- INITIALIZED WITH A STATIC AGGREGATE. |
-- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS |
-- INITIALIZED WITH A STATIC VALUE. |
-- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC |
-- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE. |
-- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB- |
-- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED |
-- WITH A STATIC AGGREGATE. |
-- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT |
-- INITIALIZED WITH A STATIC AGGREGATE. |
|
-- DAS 1/20/81 |
-- SPS 10/26/82 |
-- VKG 1/13/83 |
-- SPS 2/9/83 |
-- BHS 7/9/84 |
|
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 -- (A) |
|
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 -- (A) |
PA (IDENT_INT(1), IDENT_INT(10)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO PA"); |
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
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 -- (B) |
PB (IDENT_INT(0), IDENT_INT(63)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO PB"); |
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
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 -- (C) |
PC (IDENT_INT(1), IDENT_INT(3)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO PC"); |
END; -- (C) |
|
-------------------------------------------------- |
|
DECLARE -- (D1) |
|
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 -- (D1) |
P1D (IDENT_INT(1), IDENT_INT(2)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO P1D"); |
END; -- (D1) |
|
-------------------------------------------------- |
|
DECLARE -- (D2) |
|
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 -- (D2) |
P2D (IDENT_INT(1), IDENT_INT(2)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO P2D"); |
END; -- (D2) |
|
-------------------------------------------------- |
|
DECLARE -- (E) |
|
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 -- (E) |
PE (IDENT_INT(4), IDENT_INT(10)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN CALL TO PE"); |
END; -- (E) |
|
-------------------------------------------------- |
|
RESULT; |
|
END C61008A; |
/c64105a.ada
0,0 → 1,84
-- C64105A.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS NOT RAISED AT THE TIME OF CALL WHEN |
-- THE VALUE OF AN ACTUAL OUT SCALAR PARAMETER DOES NOT SATISFY THE |
-- RANGE CONSTRAINTS OF THE FORMAL PARAMETER. |
|
-- DAS 1/29/81 |
-- CPP 8/6/84 |
|
WITH REPORT; |
PROCEDURE C64105A IS |
|
USE REPORT; |
|
SUBTYPE SUBINT1 IS INTEGER RANGE -10..10; |
SUBTYPE SUBINT2 IS INTEGER RANGE -20..20; |
|
I10 : SUBINT1 := 10; |
I20 : SUBINT2 := 20; |
|
PROCEDURE P1 (I : OUT SUBINT1) IS |
BEGIN |
I := SUBINT1'FIRST; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
BEGIN |
|
TEST ("C64105A", "CHECK THAT CONSTRAINT_ERROR IS NOT RAISED" & |
" AT THE TIME OF CALL WHEN THE VALUE OF AN" & |
" ACTUAL OUT SCALAR PARAMETER DOES NOT" & |
" SATISFY THE RANGE CONSTRAINTS OF THE FORMAL" & |
" PARAMETER"); |
|
DECLARE |
BEGIN |
P1 (SUBINT1(I20)); |
IF I20 /= IDENT_INT(-10) THEN |
FAILED ("OUT PARAM DID NOT GET CORRECT VALUE - 1"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED ON CALL TO P1 - 1"); |
END; |
|
DECLARE |
BEGIN |
I20 := IDENT_INT(20); |
P1 (I20); |
IF I20 /= IDENT_INT(-10) THEN |
FAILED ("OUT PARAM DID NOT GET CORRECT VALUE - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED ON CALL TO P1 - 2"); |
END; |
|
RESULT; |
|
END C64105A; |
/c64105b.ada
0,0 → 1,184
-- C64105B.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS NOT RAISED FOR ACCESS PARAMETERS |
-- IN THE FOLLOWING CIRCUMSTANCES: |
-- (1) BEFORE THE CALL, WHEN AN IN OR IN OUT ACTUAL ACCESS |
-- PARAMETER HAS VALUE NULL, BUT WITH CONSTRAINTS DIFFERENT |
-- FROM THE FORMAL PARAMETER. |
-- (2) |
-- (3) |
-- SUBTESTS ARE: |
-- (A) CASE 1, IN MODE, STATIC ONE DIMENSIONAL BOUNDS. |
-- (B) CASE 1, IN OUT MODE, DYNAMIC RECORD DISCRIMINANTS. |
-- (C) CASE (A), BUT ACTUAL PARAMETER IS A TYPE CONVERSION. |
-- (D) CASE (B), BUT ACTUAL PARAMETER IS A TYPE CONVERSION. |
|
-- JRK 3/20/81 |
-- SPS 10/26/82 |
-- CPP 8/6/84 |
|
WITH REPORT; |
PROCEDURE C64105B IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64105B", "CHECK THAT CONSTRAINT_ERROR IS NOT RAISED " & |
"BEFORE THE CALL, WHEN AN IN OR IN OUT ACTUAL ACCESS " & |
"PARAMETER HAS VALUE NULL, BUT WITH CONSTRAINTS DIFFERENT " & |
"FROM THE FORMAL PARAMETER" ); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
TYPE E IS (E1, E2, E3, E4); |
TYPE T IS ARRAY (E RANGE <>) OF INTEGER; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(E2..E4); |
V : A (E1..E2) := NULL; |
|
PROCEDURE P (X : SA ) IS |
BEGIN |
NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (A)"); |
END P; |
|
BEGIN -- (A) |
|
P (V); |
|
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (A)"); |
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
TYPE ARR IS ARRAY (CHARACTER RANGE <>) OF INTEGER; |
TYPE T (B : BOOLEAN := FALSE; C : CHARACTER := 'A') IS |
RECORD |
I : INTEGER; |
CASE B IS |
WHEN FALSE => |
J : INTEGER; |
WHEN TRUE => |
A : ARR ('A' .. C); |
END CASE; |
END RECORD; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(TRUE, 'C'); |
V : A (IDENT_BOOL(FALSE), IDENT_CHAR('B')) := NULL; |
|
PROCEDURE P (X : IN OUT SA ) IS |
BEGIN |
NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (B)"); |
END P; |
|
BEGIN -- (B) |
|
P (V); |
|
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (B)"); |
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
TYPE E IS (E1, E2, E3, E4); |
TYPE T IS ARRAY (E RANGE <>) OF INTEGER; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(E2..E4); |
V : A (E1..E2) := NULL; |
|
PROCEDURE P (X : SA ) IS |
BEGIN |
NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (C)"); |
END P; |
|
BEGIN -- (C) |
|
P (SA(V)); |
|
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (C)"); |
END; -- (C) |
|
-------------------------------------------------- |
|
DECLARE -- (D) |
TYPE ARR IS ARRAY (CHARACTER RANGE <>) OF INTEGER; |
TYPE T (B : BOOLEAN := FALSE; C : CHARACTER := 'A') IS |
RECORD |
I : INTEGER; |
CASE B IS |
WHEN FALSE => |
J : INTEGER; |
WHEN TRUE => |
A : ARR ('A' .. C); |
END CASE; |
END RECORD; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(TRUE, 'C'); |
V : A (IDENT_BOOL(FALSE), IDENT_CHAR('B')) := NULL; |
|
PROCEDURE P (X : IN OUT SA ) IS |
BEGIN |
NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (D)"); |
END P; |
|
BEGIN -- (D) |
|
P (SA(V)); |
|
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (D)"); |
END; -- (D) |
|
-------------------------------------------------- |
|
RESULT; |
END C64105B; |
/c64105c.ada
0,0 → 1,230
-- C64105C.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS NOT RAISED FOR ACCESS PARAMETERS |
-- IN THE FOLLOWING CIRCUMSTANCES: |
-- (1) |
-- (2) AFTER THE CALL, WHEN AN IN OUT OR OUT FORMAL |
-- ACCESS VALUE IS NULL, AND THE ACTUAL PARAMETER HAS |
-- DIFFERENT CONSTRAINTS. |
-- (3) |
-- SUBTESTS ARE: |
-- (C) CASE 2, IN OUT MODE, STATIC PRIVATE DISCRIMINANT. |
-- (D) CASE 2, OUT MODE, DYNAMIC TWO DIMENSIONAL BOUNDS. |
-- (E) SAME AS (C), WITH TYPE CONVERSION. |
-- (F) SAME AS (D), WITH TYPE CONVERSION. |
|
-- JRK 3/20/81 |
-- SPS 10/26/82 |
-- CPP 8/8/84 |
|
WITH REPORT; |
PROCEDURE C64105C IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64105C", "CHECK THAT CONSTRAINT_ERROR IS NOT RAISED " & |
"AFTER THE CALL, WHEN AN IN OUT OR OUT FORMAL " & |
"ACCESS VALUE IS NULL, AND THE ACTUAL PARAMETER HAS " & |
"DIFFERENT CONSTRAINTS" ); |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
PACKAGE PKG IS |
TYPE E IS (E1, E2); |
TYPE T (D : E := E1) IS PRIVATE; |
PRIVATE |
TYPE T (D : E := E1) IS |
RECORD |
I : INTEGER; |
CASE D IS |
WHEN E1 => |
B : BOOLEAN; |
WHEN E2 => |
C : CHARACTER; |
END CASE; |
END RECORD; |
END PKG; |
USE PKG; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(E2); |
V : A (E1) := NULL; |
ENTERED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : IN OUT SA) IS |
BEGIN |
ENTERED := TRUE; |
X := NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (C)"); |
END P; |
|
BEGIN -- (C) |
|
P (V); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (C)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (C)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (C)"); |
END; -- (C) |
|
-------------------------------------------------- |
|
DECLARE -- (D) |
|
TYPE T IS ARRAY (CHARACTER RANGE <>, BOOLEAN RANGE <>) OF |
INTEGER; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A ('D'..'F', FALSE..FALSE); |
V : A (IDENT_CHAR('A') .. IDENT_CHAR('B'), |
IDENT_BOOL(TRUE) .. IDENT_BOOL(TRUE)) := NULL; |
ENTERED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : OUT SA) IS |
BEGIN |
ENTERED := TRUE; |
X := NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (D)"); |
END P; |
|
BEGIN -- (D) |
|
P (V); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (D)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (D)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (D)"); |
END; -- (D) |
|
-------------------------------------------------- |
|
DECLARE -- (E) |
|
PACKAGE PKG IS |
TYPE E IS (E1, E2); |
TYPE T (D : E := E1) IS PRIVATE; |
PRIVATE |
TYPE T (D : E := E1) IS |
RECORD |
I : INTEGER; |
CASE D IS |
WHEN E1 => |
B : BOOLEAN; |
WHEN E2 => |
C : CHARACTER; |
END CASE; |
END RECORD; |
END PKG; |
USE PKG; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(E2); |
V : A (E1) := NULL; |
ENTERED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : IN OUT SA) IS |
BEGIN |
ENTERED := TRUE; |
X := NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (C)"); |
END P; |
|
BEGIN -- (E) |
|
P (SA(V)); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (E)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (E)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (E)"); |
END; -- (E) |
|
-------------------------------------------------- |
|
DECLARE -- (F) |
|
TYPE T IS ARRAY (CHARACTER RANGE <>, BOOLEAN RANGE <>) OF |
INTEGER; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A ('D'..'F', FALSE..FALSE); |
V : A (IDENT_CHAR('A') .. IDENT_CHAR('B'), |
IDENT_BOOL(TRUE) .. IDENT_BOOL(TRUE)) := NULL; |
ENTERED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : OUT SA) IS |
BEGIN |
ENTERED := TRUE; |
X := NULL; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (D)"); |
END P; |
|
BEGIN -- (D) |
|
P (SA(V)); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT ENTERED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (F)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (F)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (F)"); |
END; -- (F) |
|
-------------------------------------------------- |
|
RESULT; |
END C64105C; |
/c64105d.ada
0,0 → 1,134
-- C64105D.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS NOT RAISED FOR ACCESS PARAMETERS |
-- IN THE FOLLOWING CIRCUMSTANCES: |
-- (1) |
-- (2) |
-- (3) BEFORE OR AFTER THE CALL, WHEN AN UNCONSTRAINED ACTUAL |
-- OUT ACCESS PARAMETER DESIGNATES AN OBJECT (PRIOR TO THE |
-- CALL) WITH CONSTRAINTS DIFFERENT FROM THE FORMAL |
-- PARAMETER. |
-- SUBTESTS ARE: |
-- (G) CASE 3, STATIC LIMITED PRIVATE DISCRIMINANT. |
-- (H) CASE 3, DYNAMIC ONE DIMENSIONAL BOUNDS. |
|
-- JRK 3/20/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64105D IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64105D", "CHECK THAT CONSTRAINT_ERROR IS NOT RAISED " & |
"BEFORE AND AFTER THE CALL, WHEN AN UNCONSTRAINED ACTUAL " & |
"OUT ACCESS PARAMETER DESIGNATES AN OBJECT (PRIOR TO THE " & |
"CALL) WITH CONSTRAINTS DIFFERENT FROM THE FORMAL " & |
"PARAMETER" ); |
|
-------------------------------------------------- |
|
DECLARE -- (G) |
|
PACKAGE PKG IS |
SUBTYPE INT IS INTEGER RANGE 0..5; |
TYPE T (I : INT := 0) IS LIMITED PRIVATE; |
PRIVATE |
TYPE ARR IS ARRAY (INTEGER RANGE <>) OF INTEGER; |
TYPE T (I : INT := 0) IS |
RECORD |
J : INTEGER; |
A : ARR (1..I); |
END RECORD; |
END PKG; |
USE PKG; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A(3); |
V : A := NEW T (2); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : OUT SA) IS |
BEGIN |
CALLED := TRUE; |
X := NEW T (3); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (G)"); |
END P; |
|
BEGIN -- (G) |
|
P (V); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (G)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (G)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (G)"); |
END; -- (G) |
|
-------------------------------------------------- |
|
DECLARE -- (H) |
|
TYPE A IS ACCESS STRING; |
SUBTYPE SA IS A (1..2); |
V : A := NEW STRING (IDENT_INT(5) .. IDENT_INT(7)); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P (X : OUT SA) IS |
BEGIN |
CALLED := TRUE; |
X := NEW STRING (IDENT_INT(1) .. IDENT_INT(2)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (H)"); |
END P; |
|
BEGIN -- (H) |
|
P (V); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL - (H)"); |
ELSE |
FAILED ("EXCEPTION RAISED ON RETURN - (H)"); |
END IF; |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - (H)"); |
END; -- (H) |
|
-------------------------------------------------- |
|
RESULT; |
END C64105D; |
/c64004g.ada
0,0 → 1,102
-- C64004G.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. |
--* |
-- CHECK THAT FOR CALLS TO SUBPROGRAMS HAVING AT LEAST ONE DEFAULT |
-- PARAMETER, THE CORRECT ASSOCIATION IS MADE BETWEEN ACTUAL AND |
-- FORMAL PARAMETERS. |
|
-- DAS 1/27/81 |
|
|
WITH REPORT; |
PROCEDURE C64004G IS |
|
USE REPORT; |
|
Y1,Y2,Y3 : INTEGER := 0; |
O1,O2 : INTEGER := 0; |
|
PROCEDURE P (I1: INTEGER; I2: INTEGER := 2; I3: INTEGER := 3; |
O1,O2,O3: OUT INTEGER) IS |
BEGIN |
O1 := I1; |
O2 := I2; |
O3 := I3; |
END P; |
|
FUNCTION F (I1: INTEGER := 1; I2: INTEGER) RETURN INTEGER IS |
BEGIN |
C64004G.O1 := I1; |
C64004G.O2 := I2; |
RETURN 1; |
END F; |
|
BEGIN |
|
TEST ("C64004G", "CHECK ASSOCIATIONS BETWEEN ACTUAL AND FORMAL" & |
" PARAMETERS (HAVING DEFAULT VALUES)"); |
|
P (I1=>11, I2=>12, I3=>13, O1=>Y1, O2=>Y2, O3=>Y3); |
IF (Y1 /= 11) OR (Y2 /= 12) OR (Y3 /= 13) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 1"); |
END IF; |
|
P (I1=>21, O1=>Y1, O2=>Y2, O3=>Y3); |
IF (Y1 /= 21) OR (Y2 /= 2) OR (Y3 /= 3) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 2"); |
END IF; |
|
P (O1=>Y1, O3=>Y3, I1=>31, I3=>33, O2=>Y2); |
IF (Y1 /= 31) OR (Y2 /= 2) OR (Y3 /= 33) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 3"); |
END IF; |
|
P (41, 42, O1=>Y1, O2=>Y2, O3=>Y3); |
IF (Y1 /= 41) OR (Y2 /= 42) OR (Y3 /= 3) THEN |
FAILED ("INCORRECT PARANETER ASSOCIATION - 4"); |
END IF; |
|
P (51, O3=>Y3, O1=>Y1, O2=>Y2, I3=>53); |
IF (Y1 /= 51) OR (Y2 /= 2) OR (Y3 /= 53) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 5"); |
END IF; |
|
Y1 := F (I1=>61, I2=>62); |
IF (O1 /= 61) OR (O2 /= 62) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 6"); |
END IF; |
|
Y2 := F (I2=>72, I1=>71); |
IF (O1 /= 71) OR (O2 /= 72) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 7"); |
END IF; |
|
Y3 := F (I2=>82); |
IF (O1 /= 1) OR (O2 /= 82) THEN |
FAILED ("INCORRECT PARAMETER ASSOCIATION - 8"); |
END IF; |
|
RESULT; |
|
END C64004G; |
/c64109a.ada
0,0 → 1,128
-- C64109A.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (A) CHECK ALL PARAMETER MODES. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109A IS |
|
BEGIN |
TEST ("C64109A", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS"); |
|
-------------------------------------------- |
|
DECLARE -- (A) |
|
TYPE ARRAY_TYPE IS ARRAY (POSITIVE RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS ARRAY_TYPE(1..IDENT_INT(5)); |
TYPE RECORD_TYPE IS |
RECORD |
I : INTEGER; |
A : ARRAY_SUBTYPE; |
END RECORD; |
REC : RECORD_TYPE := (I => 23, |
A => (1..3 => IDENT_INT(7), 4..5 => 9)); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR |
ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS FOR IN PARAMETER"); |
END IF; |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(1) OR |
ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS FOR IN PARAMETER FOR FN"); |
END IF; |
|
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN OUT PARAMETER NOT PASSED " & |
"CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(1) OR |
ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS FOR IN OUT PARAMETER"); |
END IF; |
ARR := (ARR'RANGE => 5); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= IDENT_INT(1) OR |
ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS FOR OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 3); |
END P3; |
|
BEGIN -- (A) |
|
P1 (REC.A); |
IF REC.A /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
|
BOOL := F1 (REC.A); |
IF REC.A /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
|
P2 (REC.A); |
IF REC.A /= (5, 5, 5, 5, 5) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
|
P3 (REC.A); |
IF REC.A /= (3, 3, 3, 3, 3) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
|
END; -- (A) |
|
-------------------------------------------- |
|
RESULT; |
END C64109A; |
/c64109b.ada
0,0 → 1,155
-- C64109B.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (B) CHECK MULTIDIMENSIONAL ARRAYS. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109B IS |
|
BEGIN |
TEST ("C64109B", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS - " & |
"MULTIDIMENSIONAL ARRAYS"); |
|
DECLARE -- (B) |
|
TYPE MULTI_TYPE IS ARRAY (POSITIVE RANGE <>, |
POSITIVE RANGE <>) OF BOOLEAN; |
SUBTYPE MULTI_SUBTYPE IS MULTI_TYPE (1..2, 1..3); |
TYPE RECORD_TYPE IS |
RECORD |
I : BOOLEAN; |
A : MULTI_SUBTYPE; |
END RECORD; |
REC : RECORD_TYPE := |
(I => FALSE, |
A => (1..2 => (1..3 => IDENT_BOOL(TRUE)))); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : MULTI_TYPE) IS |
BEGIN |
IF ARR /= (1..2 => (1..3 => TRUE)) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(2) THEN |
FAILED ("FIRST DIM NOT CORRECT - IN PARAMETER"); |
ELSIF ARR'FIRST(2) /= IDENT_INT(1) OR ARR'LAST(2) /= 3 |
THEN |
FAILED ("2ND DIM NOT CORRECT - IN PARAMETER"); |
END IF; |
END P1; |
|
FUNCTION F1 (ARR : MULTI_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (1..2 => (1..3 => TRUE)) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(2) THEN |
FAILED ("FIRST DIM NOT CORRECT - IN PARAMETER FN"); |
ELSIF ARR'FIRST(2) /= IDENT_INT(1) OR ARR'LAST(2) /= 3 |
THEN |
FAILED ("2ND DIM NOT CORRECT - IN PARAMETER FN"); |
END IF; |
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT MULTI_TYPE) IS |
BEGIN |
IF ARR /= (1..2 => (1..3 => TRUE)) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(2) THEN |
FAILED ("FIRST DIM NOT CORRECT - IN OUT PARAMETER"); |
ELSIF ARR'FIRST(2) /= IDENT_INT(1) OR ARR'LAST(2) /= 3 |
THEN |
FAILED ("2ND DIM NOT CORRECT - IN OUT PARAMETER"); |
END IF; |
ARR := (ARR'RANGE(1) => (ARR'RANGE(2) => FALSE)); |
END P2; |
|
PROCEDURE P3 (ARR : OUT MULTI_TYPE) IS |
BEGIN |
FOR I IN 1 .. 2 LOOP |
FOR J IN 1 .. 3 LOOP |
IF (J MOD 2) = 0 THEN |
ARR(I, J) := TRUE; |
ELSE |
ARR(I, J) := FALSE; |
END IF; |
END LOOP; |
END LOOP; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(2) THEN |
FAILED ("FIRST DIM NOT CORRECT - OUT PARAMETER"); |
ELSIF ARR'FIRST(2) /= IDENT_INT(1) OR ARR'LAST(2) /= 3 |
THEN |
FAILED ("2ND DIM NOT CORRECT - OUT PARAMETER"); |
END IF; |
END P3; |
|
BEGIN -- (B) |
|
P1 (REC.A); |
IF REC.A /= (1..2 => (1..3 => TRUE)) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
|
BOOL := F1 (REC.A); |
IF REC.A /= (1..2 => (1..3 => TRUE)) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
|
P2 (REC.A); |
IF REC.A /= (1..2 => (1..3 => FALSE)) THEN |
FAILED ("IN OUT PARAM CHANGED BY PROCEDURE"); |
END IF; |
|
P3 (REC.A); |
FOR I IN 1 .. 2 LOOP |
FOR J IN 1 .. 3 LOOP |
IF (J MOD 2) = 0 THEN |
IF REC.A(I, J) /= TRUE THEN |
FAILED ("OUT PARAM RETURNED " & |
"INCORRECTLY - (B)"); |
END IF; |
ELSE |
IF REC.A(I, J) /= FALSE THEN |
FAILED ("OUT PARAM RETURNED " & |
"INCORRECTLY - (B)2"); |
END IF; |
END IF; |
END LOOP; |
END LOOP; |
|
END; -- (B) |
|
RESULT; |
END C64109B; |
/c64109c.ada
0,0 → 1,127
-- C64109C.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (C) CHECK RECORDS HAVING A DISCRIMINANT, WITH MORE THAN ONE ARRAY |
-- COMPONENT, WHERE THE BOUNDS OF THE ARRAY DEPEND ON THE |
-- DISCRIMINANT. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109C IS |
|
BEGIN |
TEST ("C64109C", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS - " & |
"RECORDS WITH DISCRIMINANTS"); |
|
DECLARE -- (C) |
|
SUBTYPE SUBINT IS INTEGER RANGE 1..6; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF INTEGER; |
TYPE RECORD_TYPE (BOUND : INTEGER) IS |
RECORD |
B : BOOLEAN; |
A : ARRAY_TYPE (1..BOUND); |
AA : ARRAY_TYPE (BOUND..6); |
END RECORD; |
REC : RECORD_TYPE (BOUND => IDENT_INT(4)) := |
(BOUND => 4, |
B => TRUE, |
A => (1..IDENT_INT(4) => 6), |
AA => (4..6 => 8)); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER"); |
END IF; |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER FOR FN"); |
END IF; |
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (8, 8, 8) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 4 OR ARR'LAST /= IDENT_INT(6) THEN |
FAILED ("WRONG BOUNDS - IN OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 10); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS - OUT PARAMETER"); |
END IF; |
ARR := (ARR'RANGE => 4); |
END P3; |
|
BEGIN -- (C) |
|
P1 (REC.A); |
IF REC.A /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
|
BOOL := F1 (REC.A); |
IF REC.A /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
|
P2 (REC.AA); |
IF REC.AA /= (10, 10, 10) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
P3 (REC.A); |
IF REC.A /= (4, 4, 4, 4) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
END; -- (C) |
|
RESULT; |
END C64109C; |
/c650001.a
0,0 → 1,412
-- C650001.A |
-- |
-- 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, for a function result type that is a return-by-reference |
-- type, Program_Error is raised if the return expression is a name that |
-- denotes an object view whose accessibility level is deeper than that |
-- of the master that elaborated the function body. |
-- |
-- Check for cases where the result type is: |
-- (a) A tagged limited type. |
-- (b) A task type. |
-- (c) A protected type. |
-- (d) A composite type with a subcomponent of a |
-- return-by-reference type (task type). |
-- |
-- TEST DESCRIPTION: |
-- The accessibility level of the master that elaborates the body of a |
-- return-by-reference function will always be less deep than that of |
-- the function (which is itself a master). |
-- |
-- Thus, the return object may not be any of the following, since each |
-- has an accessibility level at least as deep as that of the function: |
-- |
-- (1) An object declared local to the function. |
-- (2) The result of a local function. |
-- (3) A parameter of the function. |
-- |
-- Verify that Program_Error is raised within the return-by-reference |
-- function if the return object is any of (1)-(3) above, for various |
-- subsets of the return types (a)-(d) above. Include cases where (1)-(3) |
-- are operands of parenthesized expressions. |
-- |
-- Verify that no exception is raised if the return object is any of the |
-- following: |
-- |
-- (4) An object declared at a less deep level than that of the |
-- master that elaborated the function body. |
-- (5) The result of a function declared at the same level as the |
-- original function (assuming the new function is also legal). |
-- (6) A parameter of the master that elaborated the function body. |
-- |
-- For (5), pass the new function as an actual via an access-to- |
-- subprogram parameter of the original function. Check for cases where |
-- the new function does and does not raise an exception. |
-- |
-- Since the functions to be tested cannot be part of an assignment |
-- statement (since they return values of a limited type), pass each |
-- function result as an actual parameter to a dummy procedure, e.g., |
-- |
-- Dummy_Proc ( Function_Call ); |
-- |
-- |
-- CHANGE HISTORY: |
-- 03 May 95 SAIC Initial prerelease version. |
-- 08 Feb 99 RLB Removed subcase with two errors. |
-- |
--! |
|
package C650001_0 is |
|
type Tagged_Limited is tagged limited record |
C: String (1 .. 10); |
end record; |
|
task type Task_Type; |
|
protected type Protected_Type is |
procedure Op; |
end Protected_Type; |
|
type Task_Array is array (1 .. 10) of Task_Type; |
|
type Variant_Record (Toggle: Boolean) is record |
case Toggle is |
when True => |
T: Task_Type; -- Return-by-reference component. |
when False => |
I: Integer; -- Non-return-by-reference component. |
end case; |
end record; |
|
-- Limited type even though variant contains no limited components: |
type Non_Task_Variant is new Variant_Record (Toggle => False); |
|
end C650001_0; |
|
|
--==================================================================-- |
|
|
package body C650001_0 is |
|
task body Task_Type is |
begin |
null; |
end Task_Type; |
|
protected body Protected_Type is |
procedure Op is |
begin |
null; |
end Op; |
end Protected_Type; |
|
end C650001_0; |
|
|
--==================================================================-- |
|
|
with C650001_0; |
package C650001_1 is |
|
type TC_Result_Kind is (OK, P_E, O_E); |
|
procedure TC_Display_Results (Actual : in TC_Result_Kind; |
Expected: in TC_Result_Kind; |
Message : in String); |
|
-- Dummy procedures: |
|
procedure Check_Tagged (P: C650001_0.Tagged_Limited); |
procedure Check_Task (P: C650001_0.Task_Type); |
procedure Check_Protected (P: C650001_0.Protected_Type); |
procedure Check_Composite (P: C650001_0.Non_Task_Variant); |
|
end C650001_1; |
|
|
--==================================================================-- |
|
|
with Report; |
package body C650001_1 is |
|
procedure TC_Display_Results (Actual : in TC_Result_Kind; |
Expected: in TC_Result_Kind; |
Message : in String) is |
begin |
if Actual /= Expected then |
case Actual is |
when OK => |
Report.Failed ("No exception raised: " & Message); |
when P_E => |
Report.Failed ("Program_Error raised: " & Message); |
when O_E => |
Report.Failed ("Unexpected exception raised: " & Message); |
end case; |
end if; |
end TC_Display_Results; |
|
|
procedure Check_Tagged (P: C650001_0.Tagged_Limited) is |
begin |
null; |
end; |
|
procedure Check_Task (P: C650001_0.Task_Type) is |
begin |
null; |
end; |
|
procedure Check_Protected (P: C650001_0.Protected_Type) is |
begin |
null; |
end; |
|
procedure Check_Composite (P: C650001_0.Non_Task_Variant) is |
begin |
null; |
end; |
|
end C650001_1; |
|
|
|
--==================================================================-- |
|
|
with C650001_0; |
with C650001_1; |
|
with Report; |
procedure C650001 is |
begin |
|
Report.Test ("C650001", "Check that, for a function result type that " & |
"is a return-by-reference type, Program_Error is raised " & |
"if the return expression is a name that denotes an " & |
"object view whose accessibility level is deeper than " & |
"that of the master that elaborated the function body"); |
|
|
|
SUBTEST1: |
declare |
|
Result: C650001_1.TC_Result_Kind; |
PO : C650001_0.Protected_Type; |
|
function Return_Prot (P: C650001_0.Protected_Type) |
return C650001_0.Protected_Type is |
begin |
Result := C650001_1.OK; |
return P; -- Formal parameter (3). |
exception |
when Program_Error => |
Result := C650001_1.P_E; -- Expected result. |
return PO; |
when others => |
Result := C650001_1.O_E; |
return PO; |
end Return_Prot; |
|
begin -- SUBTEST1. |
C650001_1.Check_Protected ( Return_Prot(PO) ); |
C650001_1.TC_Display_Results (Result, C650001_1.P_E, "SUBTEST #1"); |
exception |
when others => |
Report.Failed ("SUBTEST #1: Unexpected exception in outer block"); |
end SUBTEST1; |
|
|
|
SUBTEST2: |
declare |
|
Result: C650001_1.TC_Result_Kind; |
Comp : C650001_0.Non_Task_Variant; |
|
function Return_Composite return C650001_0.Non_Task_Variant is |
Local: C650001_0.Non_Task_Variant; |
begin |
Result := C650001_1.OK; |
return (Local); -- Parenthesized local object (1). |
exception |
when Program_Error => |
Result := C650001_1.P_E; -- Expected result. |
return Comp; |
when others => |
Result := C650001_1.O_E; |
return Comp; |
end Return_Composite; |
|
begin -- SUBTEST2. |
C650001_1.Check_Composite ( Return_Composite ); |
C650001_1.TC_Display_Results (Result, C650001_1.P_E, "SUBTEST #2"); |
exception |
when others => |
Report.Failed ("SUBTEST #2: Unexpected exception in outer block"); |
end SUBTEST2; |
|
|
|
SUBTEST3: |
declare |
|
Result: C650001_1.TC_Result_Kind; |
Tsk : C650001_0.Task_Type; |
TskArr: C650001_0.Task_Array; |
|
function Return_Task (P: C650001_0.Task_Array) |
return C650001_0.Task_Type is |
|
function Inner return C650001_0.Task_Type is |
begin |
return P(P'First); -- OK: should not raise exception (6). |
exception |
when Program_Error => |
Report.Failed ("SUBTEST #3: Program_Error incorrectly " & |
"raised within function Inner"); |
return Tsk; |
when others => |
Report.Failed ("SUBTEST #3: Unexpected exception " & |
"raised within function Inner"); |
return Tsk; |
end Inner; |
|
begin -- Return_Task. |
Result := C650001_1.OK; |
return Inner; -- Call to local function (2). |
exception |
when Program_Error => |
Result := C650001_1.P_E; -- Expected result. |
return Tsk; |
when others => |
Result := C650001_1.O_E; |
return Tsk; |
end Return_Task; |
|
begin -- SUBTEST3. |
C650001_1.Check_Task ( Return_Task(TskArr) ); |
C650001_1.TC_Display_Results (Result, C650001_1.P_E, "SUBTEST #3"); |
exception |
when others => |
Report.Failed ("SUBTEST #3: Unexpected exception in outer block"); |
end SUBTEST3; |
|
|
|
SUBTEST4: |
declare |
|
Result: C650001_1.TC_Result_Kind; |
TagLim: C650001_0.Tagged_Limited; |
|
function Return_TagLim (P: C650001_0.Tagged_Limited'Class) |
return C650001_0.Tagged_Limited is |
begin |
Result := C650001_1.OK; |
return C650001_0.Tagged_Limited(P); -- Conversion of formal param (3). |
exception |
when Program_Error => |
Result := C650001_1.P_E; -- Expected result. |
return TagLim; |
when others => |
Result := C650001_1.O_E; |
return TagLim; |
end Return_TagLim; |
|
begin -- SUBTEST4. |
C650001_1.Check_Tagged ( Return_TagLim(TagLim) ); |
C650001_1.TC_Display_Results (Result, C650001_1.P_E, |
"SUBTEST #4 (root type)"); |
exception |
when others => |
Report.Failed ("SUBTEST #4: Unexpected exception in outer block"); |
end SUBTEST4; |
|
|
|
SUBTEST5: |
declare |
Tsk : C650001_0.Task_Type; |
begin -- SUBTEST5. |
|
declare |
Result: C650001_1.TC_Result_Kind; |
|
type AccToFunc is access function return C650001_0.Task_Type; |
|
function Return_Global return C650001_0.Task_Type is |
begin |
return Tsk; -- OK: should not raise exception (4). |
end Return_Global; |
|
function Return_Local return C650001_0.Task_Type is |
Local : C650001_0.Task_Type; |
begin |
return Local; -- Propagate Program_Error. |
end Return_Local; |
|
|
function Return_Func (P: AccToFunc) return C650001_0.Task_Type is |
begin |
Result := C650001_1.OK; |
return P.all; -- Function call (5). |
exception |
when Program_Error => |
Result := C650001_1.P_E; |
return Tsk; |
when others => |
Result := C650001_1.O_E; |
return Tsk; |
end Return_Func; |
|
RG : AccToFunc := Return_Global'Access; |
RL : AccToFunc := Return_Local'Access; |
|
begin |
C650001_1.Check_Task ( Return_Func(RG) ); |
C650001_1.TC_Display_Results (Result, C650001_1.OK, |
"SUBTEST #5 (global task)"); |
|
C650001_1.Check_Task ( Return_Func(RL) ); |
C650001_1.TC_Display_Results (Result, C650001_1.P_E, |
"SUBTEST #5 (local task)"); |
exception |
when others => |
Report.Failed ("SUBTEST #5: Unexpected exception in outer block"); |
end; |
|
end SUBTEST5; |
|
|
|
Report.Result; |
|
end C650001; |
/c64109d.ada
0,0 → 1,128
-- C64109D.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (D) CHECK OBJECTS DESIGNATED BY ACCESS TYPES. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109D IS |
|
BEGIN |
TEST ("C64109D", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS - " & |
"OBJECTS DESIGNATED BY ACCESS TYPES"); |
|
DECLARE -- (D) |
|
SUBTYPE INDEX IS INTEGER RANGE 1..3; |
TYPE ARRAY_TYPE IS ARRAY (INDEX RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS ARRAY_TYPE(1..IDENT_INT(3)); |
TYPE NODE_TYPE; |
TYPE ACCESS_TYPE IS ACCESS NODE_TYPE; |
TYPE NODE_TYPE IS |
RECORD |
A : ARRAY_SUBTYPE; |
NEXT : ACCESS_TYPE; |
END RECORD; |
PTR : ACCESS_TYPE := NEW NODE_TYPE' |
(A => (IDENT_INT(1)..3 => IDENT_INT(5)), |
NEXT => NULL); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER"); |
END IF; |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER FOR FN"); |
END IF; |
|
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_SUBTYPE) IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - IN OUT PARAMETER"); |
END IF; |
|
ARR := (OTHERS => 6); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 7); |
END P3; |
|
BEGIN -- (D) |
|
P1 (PTR.A); |
IF PTR.A /= (5, 5, 5) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
|
BOOL := F1 (PTR.A); |
IF PTR.A /= (5, 5, 5) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
|
P2 (PTR.A); |
IF PTR.A /= (6, 6, 6) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
P3 (PTR.A); |
IF PTR.A /= (7, 7, 7) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
END; -- (D) |
|
RESULT; |
END C64109D; |
/c64109e.ada
0,0 → 1,156
-- C64109E.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (E) CHECK THE CASE WHERE THE FORMAL IS UNCONSTRAINED, AND ARRAYS |
-- WITH DIFFERENT BOUNDS ARE PASSED AS ACTUALS. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109E IS |
|
BEGIN |
TEST ("C64109E", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS - " & |
"ARRAYS WITH DIFFERENT BOUNDS PASSED TO UNCONSTRAINED " & |
"FORMAL"); |
|
DECLARE -- (E) |
|
SUBTYPE SUBINT IS INTEGER RANGE 0..5; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
TYPE RECORD_TYPE IS |
RECORD |
A : ARRAY_TYPE (IDENT_INT(0)..IDENT_INT(2)); |
B : ARRAY_TYPE (1..3); |
END RECORD; |
REC : RECORD_TYPE := (A => (0..2 => IDENT_BOOL(TRUE)), |
B => (1..3 => IDENT_BOOL(FALSE))); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE; ARR2 : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG IN PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY - 2"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG IN PARAMETER BOUNDS - 2"); |
END IF; |
END P1; |
|
FUNCTION F1 ( ARR : ARRAY_TYPE; ARR2 : ARRAY_TYPE) |
RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG IN PARAMETER BOUNDS FOR FN - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG IN PARAMETER BOUNDS FOR FN - 2"); |
END IF; |
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE; |
ARR2 : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG IN OUT PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG IN OUT PARAMETER BOUNDS - 2"); |
END IF; |
ARR := (ARR'RANGE => FALSE); |
ARR2 := (ARR2'RANGE => TRUE); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE; ARR2 : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG OUT PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG OUT PARAMETER BOUNDS - 2"); |
END IF; |
ARR := (ARR'RANGE => FALSE); |
ARR2 := (ARR2'RANGE => TRUE); |
END P3; |
|
BEGIN -- (E) |
|
P1 (REC.A, REC.B); |
IF REC.A /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
IF REC.B /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE - 2"); |
END IF; |
|
BOOL := F1 (REC.A, REC.B); |
IF REC.A /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
IF REC.B /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION - 2"); |
END IF; |
|
P2 (REC.A, REC.B); |
IF REC.A /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
IF REC.B /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY - 2"); |
END IF; |
|
P3 (REC.A, REC.B); |
IF REC.A /= (FALSE, FALSE, FALSE) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
IF REC.B /= (TRUE, TRUE, TRUE) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY - 2"); |
END IF; |
|
END; -- (E) |
|
RESULT; |
END C64109E; |
/c64109f.ada
0,0 → 1,126
-- C64109F.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. |
--* |
-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY |
-- TO SUBPROGRAMS. SPECIFICALLY, |
-- (F) CHECK THAT A FORMAL PARAMETER CAN BE USED AS AN ACTUAL IN |
-- ANOTHER CALL. |
|
-- CPP 8/20/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109F IS |
|
BEGIN |
TEST ("C64109F", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & |
"RECORDS ARE PASSED CORRECTLY TO SUBPROGRAMS - " & |
"FORMAL AS AN ACTUAL"); |
|
DECLARE -- (F) |
|
TYPE ARRAY_TYPE IS ARRAY (POSITIVE RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS |
ARRAY_TYPE (IDENT_INT(1)..IDENT_INT(5)); |
TYPE RECORD_TYPE IS |
RECORD |
I : INTEGER; |
A : ARRAY_SUBTYPE; |
END RECORD; |
REC : RECORD_TYPE := (I => 23, |
A => (1..3 => 7, 4..5 => 9)); |
BOOL : BOOLEAN; |
|
PROCEDURE P_CALLED (A : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF A /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN OUT PARAM NOT RECEIVED CORRECTLY"); |
END IF; |
IF A'FIRST /= 1 OR A'LAST /= 5 THEN |
FAILED ("BOUNDS WRONG - IN OUT"); |
END IF; |
A := (6, 6, 6, 6, 6); |
END P_CALLED; |
|
PROCEDURE P (A : IN OUT ARRAY_TYPE) IS |
BEGIN |
P_CALLED (A); |
END P; |
|
FUNCTION F_CALLED (A : ARRAY_SUBTYPE) RETURN BOOLEAN IS |
GOOD : BOOLEAN; |
BEGIN |
GOOD := (A = (7, 7, 7, 9, 9)); |
IF NOT GOOD THEN |
FAILED ("IN PARAMETER NOT RECEIVED CORRECTLY"); |
END IF; |
IF A'FIRST /= 1 OR A'LAST /= IDENT_INT(5) THEN |
FAILED ("BOUNDS WRONG - FUNCTION"); |
END IF; |
RETURN GOOD; |
END F_CALLED; |
|
FUNCTION F (A : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
RETURN (F_CALLED (A)); |
END F; |
|
PROCEDURE P_OUT_CALLED (A : OUT ARRAY_TYPE) IS |
BEGIN |
IF A'FIRST /= 1 OR A'LAST /= 5 THEN |
FAILED ("BOUNDS WRONG - OUT"); |
END IF; |
A := (8, 8, 8, 8, 8); |
END P_OUT_CALLED; |
|
PROCEDURE P_OUT (A : OUT ARRAY_TYPE) IS |
BEGIN |
P_OUT_CALLED (A); |
A := (9, 9, 9, 9, 9); |
END P_OUT; |
|
BEGIN -- (F) |
|
P (REC.A); |
IF REC.A /= (6, 6, 6, 6, 6) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
REC.A := (7, 7, 7, 9, 9); |
BOOL := F (REC.A); |
IF NOT BOOL THEN |
FAILED ("IN PARAM NOT RETURNED CORRECTLY"); |
END IF; |
|
REC.A := (7, 7, 7, 9, 9); |
P_OUT (REC.A); |
IF REC.A /= (9, 9, 9, 9, 9) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY - 2"); |
END IF; |
|
END; -- (F) |
|
-------------------------------------------- |
|
RESULT; |
END C64109F; |
/c64109g.ada
0,0 → 1,125
-- C64109G.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. |
--* |
-- CHECK THAT SLICES OF ARRAYS ARE PASSED CORRECTLY TO SUBPROGRAMS. |
-- SPECIFICALLY, |
-- (A) CHECK ALL PARAMETER MODES. |
|
-- CPP 8/28/84 |
-- PWN 05/31/96 Corrected spelling problem. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109G IS |
|
BEGIN |
TEST ("C64109G", "CHECK THAT SLICES OF ARRAYS ARE PASSED " & |
"CORRECTLY TO SUBPROGRAMS"); |
|
-------------------------------------------- |
|
DECLARE -- (A) |
|
SUBTYPE SUBINT IS INTEGER RANGE 1..5; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF INTEGER; |
ARR : ARRAY_TYPE (1..5) := (1..3 => 7, 4..5 => 9); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (S : ARRAY_TYPE) IS |
BEGIN |
IF S(IDENT_INT(3)) /= 7 THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY - (A)"); |
END IF; |
IF S(4) /= 9 THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY - (A)2"); |
END IF; |
END P1; |
|
FUNCTION F1 (S : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF S(3) /= 7 THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY - (A)"); |
END IF; |
IF S(IDENT_INT(4)) /= 9 THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY - (A)2"); |
END IF; |
RETURN TRUE; |
END F1; |
|
PROCEDURE P2 (S : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF S(3) /= 7 THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY - (A)"); |
END IF; |
IF S(4) /= 9 THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY - (A)2"); |
END IF; |
FOR I IN 3 .. 4 LOOP |
S(I) := 5; |
END LOOP; |
END P2; |
|
PROCEDURE P3 (S : OUT ARRAY_TYPE) IS |
BEGIN |
FOR I IN 3 .. 4 LOOP |
S(I) := 3; |
END LOOP; |
END P3; |
|
BEGIN -- (A) |
|
P1 (ARR(3..4)); |
IF ARR(3) /= 7 THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE - (A)"); |
END IF; |
IF ARR(4) /= 9 THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE - (A)2"); |
END IF; |
|
BOOL := F1 (ARR(IDENT_INT(3)..IDENT_INT(4))); |
IF ARR(3) /= 7 THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION - (A)"); |
END IF; |
IF ARR(4) /= 9 THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION - (A)2"); |
END IF; |
|
P2 (ARR(3..4)); |
FOR I IN 3 .. 4 LOOP |
IF ARR(I) /= 5 THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY - (A)"); |
END IF; |
END LOOP; |
|
P3 (ARR(IDENT_INT(3)..4)); |
FOR I IN 3 .. 4 LOOP |
IF ARR(I) /= 3 THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY - (A)"); |
END IF; |
END LOOP; |
|
END; |
|
RESULT; |
|
END C64109G; |
/c64109h.ada
0,0 → 1,160
-- C64109H.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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE |
-- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY, |
-- (A) CHECK ALL PARAMETER MODES. |
|
-- HISTORY: |
-- TBN 07/11/86 CREATED ORIGINAL TEST. |
-- JET 08/04/87 MODIFIED REC.A REFERENCES. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109H IS |
|
BEGIN |
TEST ("C64109H", "CHECK THAT SLICES OF ARRAYS WHICH ARE " & |
"COMPONENTS OF RECORDS ARE PASSED CORRECTLY " & |
"TO SUBPROGRAMS"); |
|
DECLARE -- (A) |
|
TYPE ARRAY_TYPE IS ARRAY (POSITIVE RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS ARRAY_TYPE(1..IDENT_INT(5)); |
TYPE RECORD_TYPE IS |
RECORD |
I : INTEGER; |
A : ARRAY_SUBTYPE; |
END RECORD; |
REC : RECORD_TYPE := (I => 23, |
A => (1..3 => IDENT_INT(7), 4..5 => 9)); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (7, 9, 9) THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(3) OR |
ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS FOR IN PARAMETER"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (7, 7, 9) THEN |
FAILED ("IN PARAMETER NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(2) OR |
ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS FOR IN PARAMETER FOR FN"); |
END IF; |
|
RETURN TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F1"); |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (7, 7, 7, 9) THEN |
FAILED ("IN OUT PARAMETER NOT PASSED " & |
"CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(1) OR |
ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS FOR IN OUT PARAMETER"); |
END IF; |
ARR := (ARR'RANGE => 5); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P2"); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= IDENT_INT(3) OR |
ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS FOR OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 3); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P3"); |
END P3; |
|
BEGIN -- (A) |
|
BEGIN -- (B) |
P1 (REC.A (3..5)); |
IF REC.A /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P1"); |
END; -- (B) |
|
BEGIN -- (C) |
BOOL := F1 (REC.A (2..4)); |
IF REC.A /= (7, 7, 7, 9, 9) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF F1"); |
END; -- (C) |
|
BEGIN -- (D) |
P2 (REC.A (1..4)); |
IF REC.A /= (5, 5, 5, 5, 9) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P2"); |
END; -- (D) |
|
BEGIN -- (E) |
P3 (REC.A (3..4)); |
IF REC.A /= (5, 5, 3, 3, 9) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P3"); |
END; -- (E) |
|
END; -- (A) |
|
RESULT; |
END C64109H; |
/c64109i.ada
0,0 → 1,163
-- C64109I.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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE |
-- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY, |
-- (C) CHECK RECORDS HAVING A DISCRIMINANT, WITH MORE THAN ONE ARRAY |
-- COMPONENT, WHERE THE BOUNDS OF THE ARRAY DEPEND ON THE |
-- DISCRIMINANT. |
|
-- HISTORY: |
-- TBN 07/10/86 CREATED ORIGINAL TEST. |
-- JET 08/04/87 REMOVED PARTIAL ARRAY REFERENCES IN |
-- RECORD FIELDS. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109I IS |
|
BEGIN |
TEST ("C64109I", "CHECK THAT SLICES OF ARRAYS WHICH ARE " & |
"COMPONENTS OF RECORDS ARE PASSED CORRECTLY " & |
"TO SUBPROGRAMS - RECORDS WITH DISCRIMINANTS"); |
|
DECLARE -- (C) |
|
SUBTYPE SUBINT IS INTEGER RANGE 1..6; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF INTEGER; |
TYPE RECORD_TYPE (BOUND : INTEGER) IS |
RECORD |
B : BOOLEAN; |
A : ARRAY_TYPE (1..BOUND); |
AA : ARRAY_TYPE (BOUND..6); |
END RECORD; |
REC : RECORD_TYPE (BOUND => IDENT_INT(4)) := |
(BOUND => 4, |
B => TRUE, |
A => (1..IDENT_INT(4) => 6), |
AA => (4..6 => 8)); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (6, 6, 6) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 1 OR ARR'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (6, 6, 6) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
|
IF ARR'FIRST /= 2 OR ARR'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER FOR FN"); |
END IF; |
RETURN TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F1"); |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (8, 8) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= 4 OR ARR'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG BOUNDS - IN OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 10); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P2"); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= 2 OR ARR'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG BOUNDS - OUT PARAMETER"); |
END IF; |
ARR := (ARR'RANGE => 4); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P3"); |
END P3; |
|
BEGIN -- (C) |
|
BEGIN -- (D) |
P1 (REC.A (1..3)); |
IF REC.A /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P1"); |
END; -- (D) |
|
BEGIN -- (E) |
BOOL := F1 (REC.A (2..4)); |
IF REC.A /= (6, 6, 6, 6) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF F1"); |
END; -- (E) |
|
BEGIN -- (F) |
P2 (REC.AA (4..5)); |
IF REC.AA /= (10, 10, 8) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P2"); |
END; -- (F) |
|
BEGIN -- (G) |
P3 (REC.A (2..3)); |
IF REC.A /= (6, 4, 4, 6) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P3"); |
END; -- (G) |
|
END; -- (C) |
|
RESULT; |
END C64109I; |
/c64109j.ada
0,0 → 1,164
-- C64109J.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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE |
-- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY, |
-- (D) CHECK OBJECTS DESIGNATED BY ACCESS TYPES. |
|
-- HISTORY: |
-- TBN 07/10/86 CREATED ORIGINAL TEST. |
-- JET 08/04/87 MODIFIED PTR.A REFERENCES. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109J IS |
|
BEGIN |
TEST ("C64109J", "CHECK THAT SLICES OF ARRAYS WHICH ARE " & |
"COMPONENTS OF RECORDS ARE PASSED CORRECTLY " & |
"TO SUBPROGRAMS - OBJECTS DESIGNATED BY ACCESS " & |
"TYPES"); |
|
DECLARE -- (D) |
|
SUBTYPE INDEX IS INTEGER RANGE 1..5; |
TYPE ARRAY_TYPE IS ARRAY (INDEX RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS ARRAY_TYPE(1..IDENT_INT(5)); |
TYPE NODE_TYPE; |
TYPE ACCESS_TYPE IS ACCESS NODE_TYPE; |
TYPE NODE_TYPE IS |
RECORD |
A : ARRAY_SUBTYPE; |
NEXT : ACCESS_TYPE; |
END RECORD; |
PTR : ACCESS_TYPE := NEW NODE_TYPE' |
(A => (IDENT_INT(1)..5 => IDENT_INT(5)), |
NEXT => NULL); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
FUNCTION F1 (ARR : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(2) OR ARR'LAST /= 4 THEN |
FAILED ("WRONG BOUNDS - IN PARAMETER FOR FN"); |
END IF; |
|
RETURN TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F1"); |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (5, 5, 5) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
|
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG BOUNDS - IN OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 6); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P2"); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE) IS |
BEGIN |
|
IF ARR'FIRST /= IDENT_INT(3) OR ARR'LAST /= 5 THEN |
FAILED ("WRONG BOUNDS - OUT PARAMETER"); |
END IF; |
|
ARR := (ARR'RANGE => 7); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P3"); |
END P3; |
|
BEGIN -- (D) |
|
BEGIN -- (E) |
P1 (PTR.A (1..3)); |
IF PTR.A /= (5, 5, 5, 5, 5) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P1"); |
END; -- (E) |
|
BEGIN -- (F) |
BOOL := F1 (PTR.A (2..4)); |
IF PTR.A /= (5, 5, 5, 5, 5) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF F1"); |
END; -- (F) |
|
BEGIN -- (G) |
P2 (PTR.A (1..3)); |
IF PTR.A /= (6, 6, 6, 5, 5) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P2"); |
END; -- (G) |
|
BEGIN -- (H) |
P3 (PTR.A (3..5)); |
IF PTR.A /= (6, 6, 7, 7, 7) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P3"); |
END; -- (H) |
|
END; -- (D) |
|
RESULT; |
END C64109J; |
/c64109k.ada
0,0 → 1,191
-- C64109K.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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE |
-- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY, |
-- (E) CHECK THE CASE WHERE THE FORMAL IS UNCONSTRAINED, AND ARRAYS |
-- WITH DIFFERENT BOUNDS ARE PASSED AS ACTUALS. |
|
-- HISTORY: |
-- TBN 07/11/86 CREATED ORIGINAL TEST. |
-- JET 08/04/87 MODIFIED REC.A REFERENCES. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109K IS |
|
BEGIN |
TEST ("C64109K", "CHECK THAT SLICES OF ARRAYS WHICH ARE " & |
"COMPONENTS OF RECORDS ARE PASSED CORRECTLY " & |
"TO SUBPROGRAMS - ARRAYS WITH DIFFERENT BOUNDS " & |
"PASSED TO UNCONSTRAINED FORMAL"); |
|
DECLARE -- (E) |
|
SUBTYPE SUBINT IS INTEGER RANGE 0..5; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
TYPE RECORD_TYPE IS |
RECORD |
A : ARRAY_TYPE (IDENT_INT(0)..IDENT_INT(4)); |
B : ARRAY_TYPE (1..5); |
END RECORD; |
REC : RECORD_TYPE := (A => (0..4 => IDENT_BOOL(TRUE)), |
B => (1..5 => IDENT_BOOL(FALSE))); |
BOOL : BOOLEAN; |
|
PROCEDURE P1 (ARR : ARRAY_TYPE; ARR2 : ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG IN PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY - 2"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG IN PARAMETER BOUNDS - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
FUNCTION F1 ( ARR : ARRAY_TYPE; ARR2 : ARRAY_TYPE) |
RETURN BOOLEAN IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(1) OR ARR'LAST /= 3 THEN |
FAILED ("WRONG IN PARAMETER BOUNDS FOR FN - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM NOT PASSED CORRECTLY TO FN"); |
END IF; |
IF ARR2'FIRST /= 3 OR ARR2'LAST /= IDENT_INT(5) THEN |
FAILED ("WRONG IN PARAMETER BOUNDS FOR FN - 2"); |
END IF; |
RETURN TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F1"); |
END F1; |
|
PROCEDURE P2 (ARR : IN OUT ARRAY_TYPE; |
ARR2 : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR /= (TRUE, TRUE, TRUE) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR'FIRST /= IDENT_INT(2) OR ARR'LAST /= 4 THEN |
FAILED ("WRONG IN OUT PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2 /= (FALSE, FALSE, FALSE) THEN |
FAILED ("IN OUT PARAM NOT PASSED CORRECTLY"); |
END IF; |
IF ARR2'FIRST /= 2 OR ARR2'LAST /= IDENT_INT(4) THEN |
FAILED ("WRONG IN OUT PARAMETER BOUNDS - 2"); |
END IF; |
ARR := (ARR'RANGE => FALSE); |
ARR2 := (ARR2'RANGE => TRUE); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P2"); |
END P2; |
|
PROCEDURE P3 (ARR : OUT ARRAY_TYPE; ARR2 : OUT ARRAY_TYPE) IS |
BEGIN |
IF ARR'FIRST /= IDENT_INT(0) OR ARR'LAST /= 2 THEN |
FAILED ("WRONG OUT PARAMETER BOUNDS - 1"); |
END IF; |
IF ARR2'FIRST /= 1 OR ARR2'LAST /= IDENT_INT(3) THEN |
FAILED ("WRONG OUT PARAMETER BOUNDS - 2"); |
END IF; |
ARR := (ARR'RANGE => FALSE); |
ARR2 := (ARR2'RANGE => TRUE); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P3"); |
END P3; |
|
BEGIN -- (E) |
|
BEGIN -- (F) |
P1 (REC.A (0..2), REC.B (1..3)); |
IF REC.A /= (TRUE, TRUE, TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE"); |
END IF; |
IF REC.B /= (FALSE, FALSE, FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM CHANGED BY PROCEDURE - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P1"); |
END; -- (F) |
|
BEGIN -- (G) |
BOOL := F1 (REC.A (1..3), REC.B (3..5)); |
IF REC.A /= (TRUE, TRUE, TRUE, TRUE, TRUE) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION"); |
END IF; |
IF REC.B /= (FALSE, FALSE, FALSE, FALSE, FALSE) THEN |
FAILED ("IN PARAM CHANGED BY FUNCTION - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF F1"); |
END; -- (G) |
|
BEGIN -- (H) |
P2 (REC.A (2..4), REC.B (2..4)); |
IF REC.A /= (TRUE, TRUE, FALSE, FALSE, FALSE) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
IF REC.B /= (FALSE, TRUE, TRUE, TRUE, FALSE) THEN |
FAILED ("IN OUT PARAM RETURNED INCORRECTLY - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P2"); |
END; -- (H) |
|
BEGIN -- (I) |
P3 (REC.A (0..2), REC.B (1..3)); |
IF REC.A /= (FALSE, FALSE, FALSE, FALSE, FALSE) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY"); |
END IF; |
IF REC.B /= (TRUE, TRUE, TRUE, TRUE, FALSE) THEN |
FAILED ("OUT PARAM RETURNED INCORRECTLY - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P3"); |
END; -- (I) |
|
END; -- (E) |
|
RESULT; |
END C64109K; |
/c64109l.ada
0,0 → 1,158
-- C64109L.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 SLICES OF ARRAYS WHICH ARE COMPONENTS OF RECORDS ARE |
-- PASSED CORRECTLY TO SUBPROGRAMS. SPECIFICALLY, |
-- (F) CHECK THAT A FORMAL PARAMETER CAN BE USED AS AN ACTUAL IN |
-- ANOTHER SUBPROGRAM CALL. |
|
-- HISTORY: |
-- TBN 07/11/86 CREATED ORIGINAL TEST. |
-- JET 08/04/87 MODIFIED REC.A REFERENCES. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64109L IS |
|
BEGIN |
TEST ("C64109L", "CHECK THAT SLICES OF ARRAYS WHICH ARE " & |
"COMPONENTS OF RECORDS ARE PASSED CORRECTLY " & |
"TO SUBPROGRAMS - FORMAL AS AN ACTUAL"); |
|
DECLARE -- (F) |
|
TYPE ARRAY_TYPE IS ARRAY (POSITIVE RANGE <>) OF INTEGER; |
SUBTYPE ARRAY_SUBTYPE IS |
ARRAY_TYPE (IDENT_INT(1)..IDENT_INT(5)); |
TYPE RECORD_TYPE IS |
RECORD |
I : INTEGER; |
A : ARRAY_SUBTYPE; |
END RECORD; |
REC : RECORD_TYPE := (I => 23, |
A => (1..3 => 7, 4..5 => 9)); |
BOOL : BOOLEAN; |
|
PROCEDURE P_CALLED (A : IN OUT ARRAY_TYPE) IS |
BEGIN |
IF A /= (7, 7, 7) THEN |
FAILED ("IN OUT PARAM NOT RECEIVED CORRECTLY"); |
END IF; |
IF A'FIRST /= 1 OR A'LAST /= IDENT_INT(3) THEN |
FAILED ("BOUNDS WRONG - IN OUT"); |
END IF; |
A := (A'RANGE => 6); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P_CALLED"); |
END P_CALLED; |
|
PROCEDURE P (A : IN OUT ARRAY_TYPE) IS |
BEGIN |
P_CALLED (A); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P"); |
END P; |
|
FUNCTION F_CALLED (A : ARRAY_TYPE) RETURN BOOLEAN IS |
GOOD : BOOLEAN; |
BEGIN |
GOOD := (A = (6, 9, 9)); |
IF NOT GOOD THEN |
FAILED ("IN PARAMETER NOT RECEIVED CORRECTLY"); |
END IF; |
IF A'FIRST /= 3 OR A'LAST /= IDENT_INT(5) THEN |
FAILED ("BOUNDS WRONG - FUNCTION"); |
END IF; |
RETURN GOOD; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F_CALLED"); |
END F_CALLED; |
|
FUNCTION F (A : ARRAY_TYPE) RETURN BOOLEAN IS |
BEGIN |
RETURN (F_CALLED (A)); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN FUNCTION F"); |
END F; |
|
PROCEDURE P_OUT_CALLED (A : OUT ARRAY_TYPE) IS |
BEGIN |
IF A'FIRST /= IDENT_INT(2) OR A'LAST /= 4 THEN |
FAILED ("BOUNDS WRONG - OUT"); |
END IF; |
A := (8, 8, 8); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE " & |
"P_OUT_CALLED"); |
END P_OUT_CALLED; |
|
PROCEDURE P_OUT (A : OUT ARRAY_TYPE) IS |
BEGIN |
P_OUT_CALLED (A); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P_OUT"); |
END P_OUT; |
|
BEGIN -- (F) |
|
BEGIN -- (G) |
P (REC.A (1..3)); |
IF REC.A /= (6, 6, 6, 9, 9) THEN |
FAILED ("IN OUT PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P"); |
END; -- (G) |
|
BEGIN -- (H) |
BOOL := F (REC.A (3..5)); |
IF NOT BOOL THEN |
FAILED ("IN PARAM NOT RETURNED CORRECTLY"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF F"); |
END; -- (H) |
|
BEGIN -- (I) |
P_OUT (REC.A (2..4)); |
IF REC.A /= (6, 8, 8, 8, 9) THEN |
FAILED ("OUT PARAM NOT RETURNED CORRECTLY - 2"); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED DURING CALL OF P_OUT"); |
END; -- (I) |
|
END; -- (F) |
|
RESULT; |
END C64109L; |
/c64005d0.ada
0,0 → 1,219
-- C64005D0M.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. |
--* |
-- CHECK THAT NESTED SUBPROGRAMS CAN BE CALLED RECURSIVELY AND THAT |
-- NON-LOCAL VARIABLES AND FORMAL PARAMETERS ARE PROPERLY ACCESSED FROM |
-- WITHIN RECURSIVE INVOCATIONS. THIS TEST CHECKS THAT EVERY DISPLAY OR |
-- STATIC CHAIN LEVEL CAN BE ACCESSED. |
|
-- THIS TEST USES 3 LEVELS OF NESTED RECURSIVE PROCEDURES (SEPARATELY |
-- COMPILED AS SUBUNITS). |
|
-- SEPARATE FILES ARE: |
-- C64005D0M THE MAIN PROCEDURE. |
-- C64005DA A RECURSIVE PROCEDURE SUBUNIT OF C64005D0M. |
-- C64005DB A RECURSIVE PROCEDURE SUBUNIT OF C64005DA. |
-- C64005DC A RECURSIVE PROCEDURE SUBUNIT OF C64005DB. |
|
-- JRK 7/30/84 |
|
WITH REPORT; USE REPORT; |
|
PROCEDURE C64005D0M IS |
|
SUBTYPE LEVEL IS CHARACTER RANGE 'A' .. 'C'; |
SUBTYPE CALL IS CHARACTER RANGE '1' .. '3'; |
|
MAX_LEV : CONSTANT := LEVEL'POS (LEVEL'LAST) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
T_LEN : CONSTANT := 2 * (1 + 3 * (MAX_LEV + |
MAX_LEV*(MAX_LEV+1)/2*2)) + 1; |
G_LEN : CONSTANT := 2 + 4 * MAX_LEV; |
|
TYPE TRACE IS |
RECORD |
E : NATURAL := 0; |
S : STRING (1 .. T_LEN); |
END RECORD; |
|
V : CHARACTER := IDENT_CHAR ('<'); |
L : CHARACTER := IDENT_CHAR ('>'); |
T : TRACE; |
G : STRING (1 .. G_LEN); |
|
PROCEDURE C64005DA (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
SEPARATE; |
|
BEGIN |
TEST ("C64005D", "CHECK THAT NON-LOCAL VARIABLES AND FORMAL " & |
"PARAMETERS AT ALL LEVELS OF NESTED " & |
"RECURSIVE PROCEDURES ARE ACCESSIBLE (FOR " & |
"3 LEVELS OF SEPARATELY COMPILED SUBUNITS)"); |
|
-- APPEND V TO T. |
T.S (T.E+1) := V; |
T.E := T.E + 1; |
|
C64005DA (IDENT_CHAR(LEVEL'FIRST), IDENT_CHAR('1'), T); |
|
-- APPEND L TO T. |
T.S (T.E+1) := L; |
T.E := T.E + 1; |
|
COMMENT ("FINAL CALL TRACE LENGTH IS: " & INTEGER'IMAGE(T.E)); |
COMMENT ("FINAL CALL TRACE IS: " & T.S(1..T.E)); |
COMMENT ("GLOBAL SNAPSHOT IS: " & G); |
|
-- CHECK THAT T AND G ARE CORRECT BY COMPUTING THEM ITERATIVELY. |
|
DECLARE |
SUBTYPE LC_LEVEL IS CHARACTER RANGE ASCII.LC_A .. |
CHARACTER'VAL (CHARACTER'POS(ASCII.LC_A) + MAX_LEV - 1); |
|
CT : TRACE; |
CG : STRING (1 .. G_LEN); |
BEGIN |
COMMENT ("CORRECT FINAL CALL TRACE LENGTH IS: " & |
INTEGER'IMAGE(T_LEN)); |
|
IF T.E /= IDENT_INT (T_LEN) THEN |
FAILED ("WRONG FINAL CALL TRACE LENGTH"); |
|
ELSE CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR I IN LC_LEVEL LOOP |
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '1'; |
CT.E := CT.E + 2; |
END LOOP; |
END LOOP; |
|
FOR I IN LC_LEVEL LOOP |
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. LC_LEVEL'PRED(I) LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := I; |
CT.S (CT.E+2) := '2'; |
CT.E := CT.E + 2; |
|
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
END LOOP; |
|
CT.S (CT.E+1) := '='; |
CT.E := CT.E + 1; |
|
FOR I IN REVERSE LEVEL LOOP |
FOR J IN REVERSE LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
|
CT.S (CT.E+1) := I; |
CT.S (CT.E+2) := '2'; |
CT.E := CT.E + 2; |
|
FOR J IN REVERSE LEVEL'FIRST .. LEVEL'PRED(I) LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
END LOOP; |
|
FOR I IN REVERSE LEVEL LOOP |
FOR J IN REVERSE LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '1'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
|
IF CT.E /= IDENT_INT (T_LEN) THEN |
FAILED ("WRONG ITERATIVE TRACE LENGTH"); |
|
ELSE COMMENT ("CORRECT FINAL CALL TRACE IS: " & CT.S); |
|
IF T.S /= CT.S THEN |
FAILED ("WRONG FINAL CALL TRACE"); |
END IF; |
END IF; |
END IF; |
|
DECLARE |
E : NATURAL := 0; |
BEGIN |
CG (1..2) := "<>"; |
E := E + 2; |
|
FOR I IN LEVEL LOOP |
CG (E+1) := LC_LEVEL'VAL (LEVEL'POS(I) - |
LEVEL'POS(LEVEL'FIRST) + |
LC_LEVEL'POS |
(LC_LEVEL'FIRST)); |
CG (E+2) := '3'; |
CG (E+3) := I; |
CG (E+4) := '3'; |
E := E + 4; |
END LOOP; |
|
COMMENT ("CORRECT GLOBAL SNAPSHOT IS: " & CG); |
|
IF G /= CG THEN |
FAILED ("WRONG GLOBAL SNAPSHOT"); |
END IF; |
END; |
END; |
|
RESULT; |
END C64005D0M; |
/c64005a.ada
0,0 → 1,64
-- C64005A.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. |
--* |
-- CHECK THAT A SUBPROGRAM CAN BE CALLED |
-- RECURSIVELY AND THAT NON-LOCAL VARIABLES AND |
-- CONSTANTS ARE PROPERLY ACCESSED FROM WITHIN |
-- RECURSIVE INVOCATIONS. |
|
-- CVP 5/1/81 |
|
WITH REPORT; |
PROCEDURE C64005A IS |
|
USE REPORT; |
|
TWENTY : CONSTANT INTEGER := 20; |
C1 : CONSTANT INTEGER := 1; |
I1, I2 : INTEGER := 0; |
|
PROCEDURE RECURSE (I1A : INTEGER; I2 : IN OUT INTEGER) IS |
C1 : CONSTANT INTEGER := 5; |
BEGIN |
IF I1A < TWENTY THEN |
RECURSE (I1A+C1, I2); |
I1 := I1 + C64005A.C1; |
I2 := I2 + I1A; |
END IF; |
END RECURSE; |
|
BEGIN |
TEST ("C64005A", "RECURSIVE SUBPROGRAMS WITH " & |
"NON-LOCAL DATA ACCESS"); |
|
RECURSE (0, I2); |
|
IF I1 /= 4 OR I2 /= 30 THEN |
FAILED ("RECURSIVE PROCEDURE INVOCATIONS " & |
"WITH GLOBAL DATA ACCESS NOT PERFORMED " & |
"CORRECTLY"); |
END IF; |
|
RESULT; |
END C64005A; |
/c64005b.ada
0,0 → 1,109
-- C64005B.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. |
--* |
-- CHECK THAT A SUBPROGRAM CAN BE CALLED RECURSIVELY AND THAT NON-LOCAL |
-- VARIABLES AND CONSTANTS ARE PROPERLY ACCESSED FROM WITHIN RECURSIVE |
-- INVOCATIONS. |
|
-- CPP 7/2/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64005B IS |
|
COUNT : INTEGER := 0; |
TWENTY : CONSTANT INTEGER := 20; |
C1 : CONSTANT INTEGER := 1; |
G1, G2, G3 : INTEGER := 0; |
G4, G5 : INTEGER := 0; |
|
PROCEDURE R (A1 : INTEGER; A2 : IN OUT INTEGER; A3 : OUT INTEGER) |
IS |
C1 : CONSTANT INTEGER := 5; |
TEN : CONSTANT INTEGER := 10; |
J1, J2 : INTEGER := 1; |
J3 : INTEGER := 0; |
|
PROCEDURE RECURSE (P1 : INTEGER; P2 : IN OUT INTEGER) IS |
C1 : INTEGER := 2; |
BEGIN -- RECURSE |
C1 := IDENT_INT (10); |
IF P1 < TWENTY THEN |
RECURSE (P1 + C1, G2); |
G1 := G1 + C64005B.C1; |
G3 := G3 + P1; |
P2 := P2 + IDENT_INT(2); |
A2 := A2 + IDENT_INT(1); |
J2 := J2 + R.C1; |
END IF; |
END RECURSE; |
|
BEGIN -- R |
IF A2 < TEN THEN |
A2 := A2 + C1; |
RECURSE (0, J1); |
J3 := J3 + TEN; |
COUNT := COUNT + 1; |
COMMENT ("ON PASS # " & INTEGER'IMAGE(COUNT)); |
COMMENT ("VALUE OF A2 IS " & INTEGER'IMAGE(A2)); |
COMMENT ("VALUE OF J3 IS " & INTEGER'IMAGE(J3)); |
R (0, A2, J3); |
J3 := J3 + A2; |
END IF; |
A3 := J1 + J3; |
END R; |
|
BEGIN |
TEST("C64005B", "RECURSIVE SUBPROGRAMS WITH ALL KINDS " & |
"OF DATA ACCESS"); |
|
R (0, G4, G5); |
|
IF (COUNT /= 2) OR (G1 /= 4) OR |
(G2 /= 4) OR (G3 /= 20) OR |
(G4 /= 14) OR (G5 /= 35) THEN |
FAILED ("RECURSIVE INVOCATIONS' DATA ACCESS IS NOT" & |
" WORKING CORRECTLY"); |
END IF; |
|
COMMENT ("VALUE OF COUNT IS " & INTEGER'IMAGE(COUNT)); |
COMMENT ("VALUE OF G1 IS " & INTEGER'IMAGE(G1)); |
COMMENT ("VALUE OF G2 IS " & INTEGER'IMAGE(G2)); |
COMMENT ("VALUE OF G3 IS " & INTEGER'IMAGE(G3)); |
COMMENT ("VALUE OF G4 IS " & INTEGER'IMAGE(G4)); |
COMMENT ("VALUE OF G5 IS " & INTEGER'IMAGE(G5)); |
|
RESULT; |
|
EXCEPTION |
WHEN PROGRAM_ERROR => |
FAILED ("PROGRAM_ERROR RAISED"); |
COMMENT ("VALUE OF COUNT IS " & INTEGER'IMAGE(COUNT)); |
COMMENT ("VALUE OF G1 IS " & INTEGER'IMAGE(G1)); |
COMMENT ("VALUE OF G2 IS " & INTEGER'IMAGE(G2)); |
COMMENT ("VALUE OF G3 IS " & INTEGER'IMAGE(G3)); |
COMMENT ("VALUE OF G4 IS " & INTEGER'IMAGE(G4)); |
COMMENT ("VALUE OF G5 IS " & INTEGER'IMAGE(G5)); |
RESULT; |
|
END C64005B; |
/c61009a.ada
0,0 → 1,160
-- C61009A.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. |
--* |
-- CHECK THAT A STATIC EXPRESSION, CONSTANT NAME, ATTRIBUTE NAME, |
-- VARIABLE, DEREFERENCED ACCESS, USER-DEFINED OPERATOR, USER- |
-- DEFINED FUNCTION, OR ALLOCATOR CAN BE USED IN THE INITIALIZATION |
-- EXPRESSION OF A FORMAL PARAMETER, AND THAT THE APPROPRIATE |
-- VALUE IS USED AS A DEFAULT PARAMETER VALUE WHEN THE SUBPROGRAM |
-- IS CALLED. |
|
-- DAS 1/21/81 |
-- ABW 7/20/82 |
-- SPS 12/10/82 |
|
WITH REPORT; |
PROCEDURE C61009A IS |
|
USE REPORT; |
|
TYPE INT IS RANGE 1 .. 10; |
|
TYPE ARR IS ARRAY (INTEGER RANGE <>) OF INTEGER; |
|
TYPE RECTYPE (CONSTRAINT : INTEGER) IS |
RECORD |
A : ARR (0..CONSTRAINT); |
END RECORD; |
|
C7 : CONSTANT INTEGER := 7; |
V7 : INTEGER := 7; |
|
TYPE A_INT IS ACCESS INTEGER; |
C_A : CONSTANT A_INT := NEW INTEGER'(7); |
|
SUBTYPE RECTYPE1 IS RECTYPE (2 + 5); |
SUBTYPE RECTYPE2 IS RECTYPE (C7); |
SUBTYPE RECTYPE3 IS RECTYPE (V7); |
|
FUNCTION "&" (X,Y : INTEGER) RETURN INTEGER IS |
BEGIN |
RETURN 10; |
END "&"; |
|
FUNCTION FUNC (X : INTEGER) RETURN INTEGER IS |
BEGIN |
RETURN X; |
END FUNC; |
|
-- STATIC EXPRESSION |
|
PROCEDURE PROC1 (REC : RECTYPE1 := (3+4,(0,1,2,3,4,5,6,7))) IS |
BEGIN |
IF (REC /= (7,(0,1,2,3,4,5,6,7))) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC1 PARAMETER"); |
END IF; |
END PROC1; |
|
-- CONSTANT NAME |
|
PROCEDURE PROC2 (REC : RECTYPE2 := (C7,(0,1,2,3,4,5,6,7))) IS |
BEGIN |
IF (REC /= (C7,(0,1,2,3,4,5,6,7))) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC2 PARAMETER"); |
END IF; |
END PROC2; |
|
-- ATTRIBUTE NAME |
|
PROCEDURE PROC3 (P1 : INT := INT'LAST) IS |
BEGIN |
IF (P1 /= INT (10)) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC3 PARAMETER"); |
END IF; |
END PROC3; |
|
-- VARIABLE |
|
PROCEDURE PROC4 (P4 : RECTYPE3 := (V7,(0,1,2,3,4,5,6,7))) IS |
BEGIN |
IF (P4 /= (V7,(0,1,2,3,4,5,6,7))) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC4 PARAMETER"); |
END IF; |
END PROC4; |
|
--DEREFERENCED ACCESS |
|
PROCEDURE PROC5 (P5 : INTEGER := C_A.ALL) IS |
BEGIN |
IF(P5 /= C_A.ALL) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC5 PARAMETER"); |
END IF; |
END PROC5; |
|
--USER-DEFINED OPERATOR |
|
PROCEDURE PROC6 (P6 : INTEGER := 6&4) IS |
BEGIN |
IF (P6 /= IDENT_INT(10)) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC6 PARAMETER"); |
END IF; |
END PROC6; |
|
--USER-DEFINED FUNCTION |
|
PROCEDURE PROC7 (P7 : INTEGER := FUNC(10)) IS |
BEGIN |
IF (P7 /= IDENT_INT(10)) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC7 PARAMETER"); |
END IF; |
END PROC7; |
|
-- ALLOCATOR |
|
PROCEDURE PROC8 (P8 : A_INT := NEW INTEGER'(7)) IS |
BEGIN |
IF (P8.ALL /= IDENT_INT(7)) THEN |
FAILED ("INCORRECT DEFAULT VALUE FOR PROC8 PARAMETER"); |
END IF; |
END PROC8; |
|
BEGIN |
TEST ("C61009A", "CHECK USE OF STATIC EXPRESSIONS, CONSTANT " & |
"NAMES, ATTRIBUTE NAMES, VARIABLES, USER- " & |
"DEFINED OPERATORS, USER-DEFINED FUNCTIONS " & |
"DEREFERENCED ACCESSES, AND ALLOCATORS IN " & |
"THE FORMAL PART OF A SUBPROGRAM SPECIFICATION"); |
|
PROC1; |
PROC2; |
PROC3; |
PROC4; |
PROC5; |
PROC6; |
PROC7; |
PROC8; |
|
RESULT; |
|
END C61009A; |
/c64005c.ada
0,0 → 1,330
-- C64005C.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. |
--* |
-- CHECK THAT NESTED SUBPROGRAMS CAN BE CALLED RECURSIVELY AND THAT |
-- NON-LOCAL VARIABLES AND FORMAL PARAMETERS ARE PROPERLY ACCESSED FROM |
-- WITHIN RECURSIVE INVOCATIONS. THIS TEST CHECKS THAT EVERY DISPLAY OR |
-- STATIC CHAIN LEVEL CAN BE ACCESSED. |
|
-- THIS TEST USES 3 LEVELS OF NESTED RECURSIVE PROCEDURES. |
|
-- JRK 7/26/84 |
|
WITH REPORT; USE REPORT; |
|
PROCEDURE C64005C IS |
|
SUBTYPE LEVEL IS CHARACTER RANGE 'A' .. 'C'; |
SUBTYPE CALL IS CHARACTER RANGE '1' .. '3'; |
|
MAX_LEV : CONSTANT := LEVEL'POS (LEVEL'LAST) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
T_LEN : CONSTANT := 2 * (1 + 3 * (MAX_LEV + |
MAX_LEV*(MAX_LEV+1)/2*2)) + 1; |
G_LEN : CONSTANT := 2 + 4 * MAX_LEV; |
|
TYPE TRACE IS |
RECORD |
E : NATURAL := 0; |
S : STRING (1 .. T_LEN); |
END RECORD; |
|
V : CHARACTER := IDENT_CHAR ('<'); |
L : CHARACTER := IDENT_CHAR ('>'); |
T : TRACE; |
G : STRING (1 .. G_LEN); |
|
PROCEDURE C64005CA (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
PROCEDURE C64005CB (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
PROCEDURE C64005CC (L : LEVEL; C : CALL; |
T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_C); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005C.V & C64005CA.V & |
C64005CB.V & C64005CC.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005CA (IDENT_CHAR(LEVEL'FIRST), |
IDENT_CHAR('2'), T); |
|
WHEN '2' => |
C64005CC (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
-- APPEND MID-POINT SYMBOL TO T. |
T.S (T.E+1) := IDENT_CHAR ('='); |
T.E := T.E + 1; |
|
-- G := CATENATE ALL V, L, C; |
G := C64005C.V & C64005C.L & |
C64005CA.V & C64005CA.L & C64005CA.C & |
C64005CB.V & C64005CB.L & C64005CB.C & |
C64005CC.V & C64005CC.L & C64005CC.C; |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005CC.L & C64005CC.C & |
C64005CB.L & C64005CB.C & |
C64005CA.L & C64005CA.C & |
C64005C.L; |
T.E := T.E + N; |
|
END C64005CC; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_B); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005C.V & C64005CA.V & |
C64005CB.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005CC (LEVEL'SUCC(L), IDENT_CHAR('1'), T); |
|
WHEN '2' => |
C64005CB (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
C64005CC (LEVEL'SUCC(L), IDENT_CHAR('2'), T); |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005CB.L & C64005CB.C & |
C64005CA.L & C64005CA.C & |
C64005C.L; |
T.E := T.E + N; |
|
END C64005CB; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_A); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005C.V & C64005CA.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005CB (LEVEL'SUCC(L), IDENT_CHAR('1'), T); |
|
WHEN '2' => |
C64005CA (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
C64005CB (LEVEL'SUCC(L), IDENT_CHAR('2'), T); |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005CA.L & C64005CA.C & C64005C.L; |
T.E := T.E + N; |
|
END C64005CA; |
|
BEGIN |
TEST ("C64005C", "CHECK THAT NON-LOCAL VARIABLES AND FORMAL " & |
"PARAMETERS AT ALL LEVELS OF NESTED " & |
"RECURSIVE PROCEDURES ARE ACCESSIBLE"); |
|
-- APPEND V TO T. |
T.S (T.E+1) := V; |
T.E := T.E + 1; |
|
C64005CA (IDENT_CHAR(LEVEL'FIRST), IDENT_CHAR('1'), T); |
|
-- APPEND L TO T. |
T.S (T.E+1) := L; |
T.E := T.E + 1; |
|
COMMENT ("FINAL CALL TRACE LENGTH IS: " & INTEGER'IMAGE(T.E)); |
COMMENT ("FINAL CALL TRACE IS: " & T.S(1..T.E)); |
COMMENT ("GLOBAL SNAPSHOT IS: " & G); |
|
-- CHECK THAT T AND G ARE CORRECT BY COMPUTING THEM ITERATIVELY. |
|
DECLARE |
SUBTYPE LC_LEVEL IS CHARACTER RANGE ASCII.LC_A .. |
CHARACTER'VAL (CHARACTER'POS(ASCII.LC_A) + MAX_LEV - 1); |
|
CT : TRACE; |
CG : STRING (1 .. G_LEN); |
BEGIN |
COMMENT ("CORRECT FINAL CALL TRACE LENGTH IS: " & |
INTEGER'IMAGE(T_LEN)); |
|
IF T.E /= IDENT_INT (T_LEN) THEN |
FAILED ("WRONG FINAL CALL TRACE LENGTH"); |
|
ELSE CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR I IN LC_LEVEL LOOP |
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '1'; |
CT.E := CT.E + 2; |
END LOOP; |
END LOOP; |
|
FOR I IN LC_LEVEL LOOP |
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. LC_LEVEL'PRED(I) LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := I; |
CT.S (CT.E+2) := '2'; |
CT.E := CT.E + 2; |
|
CT.S (CT.E+1) := '<'; |
CT.E := CT.E + 1; |
|
FOR J IN LC_LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
END LOOP; |
|
CT.S (CT.E+1) := '='; |
CT.E := CT.E + 1; |
|
FOR I IN REVERSE LEVEL LOOP |
FOR J IN REVERSE LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
|
CT.S (CT.E+1) := I; |
CT.S (CT.E+2) := '2'; |
CT.E := CT.E + 2; |
|
FOR J IN REVERSE LEVEL'FIRST .. LEVEL'PRED(I) LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '3'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
END LOOP; |
|
FOR I IN REVERSE LEVEL LOOP |
FOR J IN REVERSE LEVEL'FIRST .. I LOOP |
CT.S (CT.E+1) := J; |
CT.S (CT.E+2) := '1'; |
CT.E := CT.E + 2; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
END LOOP; |
|
CT.S (CT.E+1) := '>'; |
CT.E := CT.E + 1; |
|
IF CT.E /= IDENT_INT (T_LEN) THEN |
FAILED ("WRONG ITERATIVE TRACE LENGTH"); |
|
ELSE COMMENT ("CORRECT FINAL CALL TRACE IS: " & CT.S); |
|
IF T.S /= CT.S THEN |
FAILED ("WRONG FINAL CALL TRACE"); |
END IF; |
END IF; |
END IF; |
|
DECLARE |
E : NATURAL := 0; |
BEGIN |
CG (1..2) := "<>"; |
E := E + 2; |
|
FOR I IN LEVEL LOOP |
CG (E+1) := LC_LEVEL'VAL (LEVEL'POS(I) - |
LEVEL'POS(LEVEL'FIRST) + |
LC_LEVEL'POS |
(LC_LEVEL'FIRST)); |
CG (E+2) := '3'; |
CG (E+3) := I; |
CG (E+4) := '3'; |
E := E + 4; |
END LOOP; |
|
COMMENT ("CORRECT GLOBAL SNAPSHOT IS: " & CG); |
|
IF G /= CG THEN |
FAILED ("WRONG GLOBAL SNAPSHOT"); |
END IF; |
END; |
END; |
|
RESULT; |
END C64005C; |
/c64106a.ada
0,0 → 1,351
-- C64106A.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. |
--* |
-- CHECK THAT UNCONSTRAINED RECORD, PRIVATE, LIMITED PRIVATE, AND ARRAY |
-- FORMAL PARAMETERS USE THE CONSTRAINTS OF ACTUAL PARAMETERS. |
-- SUBTESTS ARE: |
-- (A) RECORD TYPE, UNCONSTRAINED ACTUALS, DEFAULTS. |
-- (B) PRIVATE TYPE, CONSTRAINED ACTUALS, NO DEFAULTS. |
-- (C) LIMITED PRIVATE TYPE, UNCONSTRAINED ACTUALS, NO DEFAULTS. |
-- (D) ARRAY TYPE, CONSTRAINED ACTUALS, DEFAULTS. |
|
-- DAS 1/15/81 |
-- JBG 5/16/83 |
-- CPP 5/22/84 |
|
WITH REPORT; |
PROCEDURE C64106A IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64106A", "CHECK USE OF ACTUAL CONSTRAINTS BY " & |
"UNCONSTRAINED FORMAL PARAMETERS"); |
|
DECLARE -- (A) |
|
PACKAGE PKG IS |
|
SUBTYPE INT IS INTEGER RANGE 0..100; |
|
TYPE RECTYPE (CONSTRAINT : INT := 80) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
|
REC1 : RECTYPE := (10,10,"0123456789"); |
REC2 : RECTYPE := (17,7,"C64106A.........."); |
REC3 : RECTYPE := (1,1,"A"); |
REC4 : RECTYPE; -- 80 |
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE := (2,0,"AB"); |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE); |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE); |
END PKG; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE := (2,0,"AB"); |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE) IS |
BEGIN |
IF (REC1.CONSTRAINT /= IDENT_INT(10)) THEN |
FAILED ("RECORD TYPE IN PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
IF (REC2.CONSTRAINT /= IDENT_INT(17)) THEN |
FAILED ("RECORD TYPE OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
IF (REC3.CONSTRAINT /= IDENT_INT(1)) THEN |
FAILED ("RECORD TYPE IN OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
REC2 := PKG.REC2; |
END CHK_RECTYPE1; |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE) IS |
BEGIN |
IF (REC.CONSTRAINT /= IDENT_INT(80)) THEN |
FAILED ("RECORD TYPE OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF " & |
"UNINITIALIZED ACTUAL"); |
END IF; |
REC := (10,10,"9876543210"); |
END CHK_RECTYPE2; |
END PKG; |
|
BEGIN -- (A) |
|
PKG.CHK_RECTYPE1 (PKG.REC1, PKG.REC2, PKG.REC3); |
PKG.CHK_RECTYPE2 (PKG.REC4); |
|
END; -- (A) |
|
--------------------------------------------- |
|
B : DECLARE -- (B) |
|
PACKAGE PKG IS |
|
SUBTYPE INT IS INTEGER RANGE 0..100; |
|
TYPE RECTYPE (CONSTRAINT : INT := 80) IS PRIVATE; |
|
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE; |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE); |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE); |
|
PRIVATE |
TYPE RECTYPE (CONSTRAINT : INT := 80) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC1 : PKG.RECTYPE(10); |
REC2 : PKG.RECTYPE(17); |
REC3 : PKG.RECTYPE(1); |
REC4 : PKG.RECTYPE(10); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE; |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE) IS |
BEGIN |
IF (REC1.CONSTRAINT /= IDENT_INT(10)) THEN |
FAILED ("PRIVATE TYPE IN PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
IF (REC2.CONSTRAINT /= IDENT_INT(17)) THEN |
FAILED ("PRIVATE TYPE OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
IF (REC3.CONSTRAINT /= IDENT_INT(1)) THEN |
FAILED ("PRIVATE TYPE IN OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF ACTUAL"); |
END IF; |
REC2 := B.REC2; |
END CHK_RECTYPE1; |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE) IS |
BEGIN |
IF (REC.CONSTRAINT /= IDENT_INT(10)) THEN |
FAILED ("PRIVATE TYPE OUT PARAMETER DID " & |
"NOT USE CONSTRAINT OF " & |
"UNINITIALIZED ACTUAL"); |
END IF; |
REC := (10,10,"9876543210"); |
END CHK_RECTYPE2; |
|
BEGIN |
REC1 := (10,10,"0123456789"); |
REC2 := (17,7,"C64106A.........."); |
REC3 := (1,1,"A"); |
|
END PKG; |
|
BEGIN -- (B) |
|
PKG.CHK_RECTYPE1 (REC1, REC2, REC3); |
PKG.CHK_RECTYPE2 (REC4); |
|
END B; -- (B) |
|
--------------------------------------------- |
|
C : DECLARE -- (C) |
|
PACKAGE PKG IS |
|
SUBTYPE INT IS INTEGER RANGE 0..100; |
|
TYPE RECTYPE (CONSTRAINT : INT := 80) IS |
LIMITED PRIVATE; |
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE; |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE); |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE); |
|
PRIVATE |
TYPE RECTYPE (CONSTRAINT : INT := 80) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC1 : PKG.RECTYPE; -- 10 |
REC2 : PKG.RECTYPE; -- 17 |
REC3 : PKG.RECTYPE; -- 1 |
REC4 : PKG.RECTYPE; -- 80 |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE1 (REC1 : IN RECTYPE; |
REC2 : OUT RECTYPE; |
REC3 : IN OUT RECTYPE) IS |
BEGIN |
IF (REC1.CONSTRAINT /= IDENT_INT(10)) THEN |
FAILED ("LIMITED PRIVATE TYPE IN PARAMETER " & |
"DID NOT USE CONSTRAINT OF " & |
"ACTUAL"); |
END IF; |
IF (REC2.CONSTRAINT /= IDENT_INT(17)) THEN |
FAILED ("LIMITED PRIVATE TYPE OUT PARAMETER " & |
"DID NOT USE CONSTRAINT OF " & |
"ACTUAL"); |
END IF; |
IF (REC3.CONSTRAINT /= IDENT_INT(1)) THEN |
FAILED ("LIMITED PRIVATE TYPE IN OUT " & |
"PARAMETER DID NOT USE " & |
"CONSTRAINT OF ACTUAL"); |
END IF; |
REC2 := C.REC2; |
END CHK_RECTYPE1; |
|
PROCEDURE CHK_RECTYPE2 (REC : OUT RECTYPE) IS |
BEGIN |
IF (REC.CONSTRAINT /= IDENT_INT(80)) THEN |
FAILED ("LIMITED PRIVATE TYPE OUT " & |
"PARAMETER DID NOT USE " & |
"CONSTRAINT OF UNINITIALIZED ACTUAL"); |
END IF; |
REC := (10,10,"9876543210"); |
END CHK_RECTYPE2; |
|
BEGIN |
REC1 := (10,10,"0123456789"); |
REC2 := (17,7,"C64106A.........."); |
REC3 := (1,1,"A"); |
END PKG; |
|
BEGIN -- (C) |
|
PKG.CHK_RECTYPE1 (REC1, REC2, REC3); |
PKG.CHK_RECTYPE2 (REC4); |
|
END C; -- (C) |
|
--------------------------------------------- |
|
D : DECLARE -- (D) |
|
TYPE ATYPE IS ARRAY (INTEGER RANGE <>, POSITIVE RANGE <>) OF |
CHARACTER; |
|
A1, A2, A3 : ATYPE(-1..1, 4..5) := (('A','B'), |
('C','D'), |
('E','F')); |
|
A4 : ATYPE(-1..1, 4..5); |
|
CA1 : CONSTANT ATYPE(8..9, -7..INTEGER'FIRST) := |
(8..9 => (-7..INTEGER'FIRST => 'A')); |
|
S1 : STRING(1..INTEGER'FIRST) := ""; |
S2 : STRING(-5..-7) := ""; |
S3 : STRING(1..0) := ""; |
|
PROCEDURE CHK_ARRAY1 (A1 : IN ATYPE := CA1; A2 : OUT ATYPE; |
A3 : IN OUT ATYPE) IS |
BEGIN |
IF ((A1'FIRST(1) /= IDENT_INT(-1)) OR |
(A1'LAST(1) /= IDENT_INT(1)) OR |
(A1'FIRST(2) /= IDENT_INT(4)) OR |
(A1'LAST(2) /= IDENT_INT(5))) THEN |
FAILED ("ARRAY TYPE IN PARAMETER DID NOT " & |
"USE CONSTRAINTS OF ACTUAL"); |
END IF; |
IF ((A2'FIRST(1) /= IDENT_INT(-1)) OR |
(A2'LAST(1) /= IDENT_INT(1)) OR |
(A2'FIRST(2) /= IDENT_INT(4)) OR |
(A2'LAST(2) /= IDENT_INT(5))) THEN |
FAILED ("ARRAY TYPE OUT PARAMETER DID NOT USE" & |
"CONSTRAINTS OF ACTUAL"); |
END IF; |
IF ((A3'FIRST(1) /= IDENT_INT(-1)) OR |
(A3'LAST(1) /= IDENT_INT(1)) OR |
(A3'FIRST(2) /= IDENT_INT(4)) OR |
(A3'LAST(2) /= IDENT_INT(5))) THEN |
FAILED ("ARRAY TYPE IN OUT PARAMETER DID NOT " & |
"USE CONSTRAINTS OF ACTUAL"); |
END IF; |
A2 := D.A2; |
END CHK_ARRAY1; |
|
PROCEDURE CHK_ARRAY2 (A4 : OUT ATYPE) IS |
BEGIN |
IF ((A4'FIRST(1) /= IDENT_INT(-1)) OR |
(A4'LAST(1) /= IDENT_INT(1)) OR |
(A4'FIRST(2) /= IDENT_INT(4)) OR |
(A4'LAST(2) /= IDENT_INT(5))) THEN |
FAILED ("ARRAY TYPE OUT PARAMETER DID NOT " & |
"USE CONSTRAINTS OF UNINITIALIZED " & |
"ACTUAL"); |
END IF; |
A4 := A2; |
END CHK_ARRAY2; |
|
PROCEDURE CHK_STRING (S1 : IN STRING; |
S2 : IN OUT STRING; |
S3 : OUT STRING) IS |
BEGIN |
IF ((S1'FIRST /= IDENT_INT(1)) OR |
(S1'LAST /= IDENT_INT(INTEGER'FIRST))) THEN |
FAILED ("STRING TYPE IN PARAMETER DID NOT " & |
"USE CONSTRAINTS OF ACTUAL NULL " & |
"STRING"); |
END IF; |
IF ((S2'FIRST /= IDENT_INT(-5)) OR |
(S2'LAST /= IDENT_INT(-7))) THEN |
FAILED ("STRING TYPE IN OUT PARAMETER DID NOT " & |
"USE CONSTRAINTS OF ACTUAL NULL STRING"); |
END IF; |
IF ((S3'FIRST /= IDENT_INT(1)) OR |
(S3'LAST /= IDENT_INT(0))) THEN |
FAILED ("STRING TYPE OUT PARAMETER DID NOT " & |
"USE CONSTRAINTS OF ACTUAL NULL STRING"); |
END IF; |
S3 := ""; |
END CHK_STRING; |
|
BEGIN -- (D) |
CHK_ARRAY1 (A1, A2, A3); |
CHK_ARRAY2 (A4); |
CHK_STRING (S1, S2, S3); |
END D; -- (D) |
|
RESULT; |
END C64106A; |
/c67005a.ada
0,0 → 1,96
-- C67005A.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. |
--* |
-- CHECK IF A RENAMING DECLARATION DECLARES AN EQUALITY OPERATOR, THE |
-- TYPES OF THE PARAMETERS NEED NOT BE LIMITED TYPES. |
|
-- JBG 9/28/83 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67005A IS |
BEGIN |
TEST ("C67005A", "CHECK THAT AN EQUALITY OPERATOR DECLARED BY " & |
"A RENAMING DECLARATION NEED NOT HAVE " & |
"PARAMETERS OF A LIMITED TYPE"); |
DECLARE |
GENERIC |
TYPE LP IS LIMITED PRIVATE; |
WITH FUNCTION EQUAL (L, R : LP) RETURN BOOLEAN; |
PACKAGE EQUALITY_OPERATOR IS |
FUNCTION "=" (L, R : LP) RETURN BOOLEAN; |
END EQUALITY_OPERATOR; |
|
PACKAGE BODY EQUALITY_OPERATOR IS |
FUNCTION "=" (L, R : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN EQUAL(L, R); |
END "="; |
END EQUALITY_OPERATOR; |
|
PACKAGE POLAR_COORDINATES IS |
TYPE POLAR_COORD IS |
RECORD |
R : INTEGER; |
THETA : INTEGER; |
END RECORD; |
FUNCTION EQUAL (L, R : POLAR_COORD) RETURN BOOLEAN; |
PACKAGE POLAR_EQUAL IS NEW EQUALITY_OPERATOR |
(POLAR_COORD, EQUAL); |
FUNCTION "=" (L, R : POLAR_COORD) RETURN BOOLEAN |
RENAMES POLAR_EQUAL."="; |
END POLAR_COORDINATES; |
|
PACKAGE BODY POLAR_COORDINATES IS |
FUNCTION EQUAL (L, R : POLAR_COORD) RETURN BOOLEAN IS |
BEGIN |
RETURN (L.THETA MOD 360) = (R.THETA MOD 360) AND |
L.R = R.R; |
END EQUAL; |
END POLAR_COORDINATES; |
|
USE POLAR_COORDINATES; |
|
PACKAGE VARIABLES IS |
P270 : POLAR_COORD := (R => 3, THETA => 270); |
P360 : POLAR_COORD := (R => 3, THETA => IDENT_INT(360)); |
END VARIABLES; |
|
USE VARIABLES; |
|
BEGIN |
|
IF P270 /= (3, -90) THEN |
FAILED ("INCORRECT INEQUALITY OPERATOR"); |
END IF; |
|
IF P360 = (3, 0) THEN |
NULL; |
ELSE |
FAILED ("INCORRECT EQUALITY OPERATOR"); |
END IF; |
|
RESULT; |
|
END; |
END C67005A; |
/c64106b.ada
0,0 → 1,237
-- C64106B.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. |
--* |
-- CHECK THAT ASSIGNMENTS TO FORMAL PARAMETERS OF UNCONSTRAINED RECORD, |
-- PRIVATE, AND LIMITED PRIVATE TYPES WITHOUT DEFAULT CONSTRAINTS |
-- RAISE CONSTRAINT_ERROR IF AN ATTEMPT IS MADE TO CHANGE THE |
-- CONSTRAINT OF THE ACTUAL PARAMETER. |
-- SUBTESTS ARE: |
-- (A) RECORD TYPE. |
-- (B) PRIVATE TYPE. |
-- (C) LIMITED PRIVATE TYPE. |
|
-- DAS 1/15/81 |
-- CPP 8/9/84 |
|
WITH REPORT; |
PROCEDURE C64106B IS |
|
USE REPORT; |
|
BEGIN |
|
TEST ("C64106B", "CHECK ASSIGNMENT TO FORMAL PARAMETERS OF " & |
"UNCONSTRAINED TYPE (WITH NO DEFAULT)"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
PACKAGE PKG IS |
|
TYPE RECTYPE (CONSTRAINT : INTEGER) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE); |
END PKG; |
|
REC9 : PKG.RECTYPE(IDENT_INT(9)) := |
(IDENT_INT(9), 9, "123456789"); |
REC6 : PKG.RECTYPE(IDENT_INT(6)) := |
(IDENT_INT(6), 5, "AEIOUY"); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE) IS |
|
REC4 : CONSTANT RECTYPE(IDENT_INT(4)) := |
(IDENT_INT(4), 4, "OOPS"); |
|
BEGIN |
BEGIN -- (A.1) |
REC9 := REC6; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - A.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - A.1"); |
END; -- (A.1) |
|
BEGIN -- (A.2) |
REC6 := REC4; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - A.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - A.2"); |
END; -- (A.2) |
|
REC9 := (IDENT_INT(9), 9, "987654321"); |
|
END CHK_RECTYPE; |
END PKG; |
|
BEGIN -- (A) |
|
PKG.CHK_RECTYPE (REC9, REC6); |
IF REC9.STRFIELD /= IDENT_STR("987654321") THEN |
FAILED ("ASSIGNMENT TO REC9 FAILED - (A)"); |
END IF; |
|
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
PACKAGE PKG IS |
|
TYPE RECTYPE (CONSTRAINT : INTEGER) IS PRIVATE; |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE); |
PRIVATE |
TYPE RECTYPE (CONSTRAINT : INTEGER) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC9 : PKG.RECTYPE(9); |
REC6 : PKG.RECTYPE(6); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE) IS |
|
REC4 : CONSTANT RECTYPE(4) := (4, 4, "OOPS"); |
|
BEGIN |
BEGIN -- (B.1) |
REC9 := REC6; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - B.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - B.1"); |
END; -- (B.1) |
|
BEGIN -- (B.2) |
REC6 := REC4; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - B.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - B.2"); |
END; -- (B.2) |
END CHK_RECTYPE; |
|
BEGIN |
REC9 := (9, 9, "123456789"); |
REC6 := (6, 5, "AEIOUY"); |
END PKG; |
|
BEGIN -- (B) |
|
PKG.CHK_RECTYPE (REC9, REC6); |
|
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
PACKAGE PKG IS |
|
TYPE RECTYPE (CONSTRAINT : INTEGER) IS LIMITED PRIVATE; |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE); |
PRIVATE |
TYPE RECTYPE (CONSTRAINT : INTEGER) IS |
RECORD |
INTFIELD : INTEGER; |
STRFIELD : STRING (1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC6 : PKG.RECTYPE(IDENT_INT(6)); |
REC9 : PKG.RECTYPE(IDENT_INT(9)); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE CHK_RECTYPE (REC9 : OUT RECTYPE; |
REC6 : IN OUT RECTYPE) IS |
|
REC4 : CONSTANT RECTYPE(4) := (4, 4, "OOPS"); |
|
BEGIN |
BEGIN -- (C.1) |
REC9 := REC6; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - C.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - C.1"); |
END; -- (C.1) |
|
BEGIN -- (C.2) |
REC6 := REC4; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - C.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - C.2"); |
END; -- (C.2) |
END CHK_RECTYPE; |
|
BEGIN |
REC6 := (6, 5, "AEIOUY"); |
REC9 := (9, 9, "123456789"); |
END PKG; |
|
BEGIN -- (C) |
|
PKG.CHK_RECTYPE (REC9, REC6); |
|
END; -- (C) |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64106B; |
/c67005b.ada
0,0 → 1,124
-- C67005B.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. |
--* |
-- CHECK THAT IF EQUALITY IS REDEFINED FOR A SCALAR TYPE, CASE |
-- STATEMENTS STILL USE THE PREDEFINED EQUALITY OPERATION. |
|
-- JBG 9/28/83 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67005B IS |
|
GENERIC |
TYPE LP IS LIMITED PRIVATE; |
WITH FUNCTION EQUAL (L, R : LP) RETURN BOOLEAN; |
PACKAGE EQUALITY_OPERATOR IS |
FUNCTION "=" (L, R : LP) RETURN BOOLEAN; |
END EQUALITY_OPERATOR; |
|
PACKAGE BODY EQUALITY_OPERATOR IS |
FUNCTION "=" (L, R : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN EQUAL(L, R); |
END "="; |
END EQUALITY_OPERATOR; |
|
BEGIN |
TEST ("C67005B", "CHECK THAT REDEFINING EQUALITY FOR A " & |
"SCALAR TYPE DOES NOT AFFECT CASE STATEMENTS"); |
|
DECLARE |
TYPE MY IS NEW INTEGER; |
CHECK : MY; |
|
VAR : INTEGER RANGE 1..3 := 3; |
|
PACKAGE INTEGER_EQUALS IS |
FUNCTION EQUAL (L, R : INTEGER) RETURN BOOLEAN; |
PACKAGE INTEGER_EQUAL IS NEW EQUALITY_OPERATOR |
(INTEGER, EQUAL); |
END INTEGER_EQUALS; |
|
FUNCTION "=" (L, R : INTEGER) RETURN BOOLEAN RENAMES |
INTEGER_EQUALS.INTEGER_EQUAL."="; |
|
PACKAGE BODY INTEGER_EQUALS IS |
FUNCTION EQUAL (L, R : INTEGER) RETURN BOOLEAN IS |
BEGIN |
RETURN FALSE; |
END EQUAL; |
END INTEGER_EQUALS; |
|
BEGIN |
|
IF VAR = 3 THEN |
FAILED ("DID NOT USE REDEFINED '=' - 1"); |
END IF; |
|
IF VAR /= 3 THEN |
NULL; |
ELSE |
FAILED ("DID NOT USE REDEFINED '/=' - 1"); |
END IF; |
|
IF VAR = IDENT_INT(3) THEN |
FAILED ("DID NOT USE REDEFINED '=' - 2"); |
END IF; |
|
IF VAR /= IDENT_INT(3) THEN |
NULL; |
ELSE |
FAILED ("DID NOT USE REDEFINED '/=' - 2"); |
END IF; |
|
CHECK := MY(IDENT_INT(0)); |
IF CHECK /= 0 THEN |
FAILED ("USING WRONG EQUALITY FOR DERIVED TYPE"); |
END IF; |
|
CASE VAR IS |
WHEN 1..3 => CHECK := MY(IDENT_INT(1)); |
WHEN OTHERS => NULL; |
END CASE; |
|
IF CHECK /= 1 THEN |
FAILED ("DID NOT USE PREDEFINED EQUALS IN CASE - 1"); |
END IF; |
|
CASE IDENT_INT(VAR) IS |
WHEN 1 => CHECK := 4; |
WHEN 2 => CHECK := 5; |
WHEN 3 => CHECK := 6; |
WHEN OTHERS => CHECK := 7; |
END CASE; |
|
IF CHECK /= 6 THEN |
FAILED ("DID NOT USE PREDEFINED EQUALS IN CASE - 2"); |
END IF; |
|
END; |
|
RESULT; |
|
END C67005B; |
/c64106c.ada
0,0 → 1,309
-- C64106C.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. |
--* |
-- CHECK THAT ASSIGNMENTS TO FORMAL PARAMETERS OF UNCONSTRAINED |
-- RECORD, PRIVATE, AND LIMITED PRIVATE TYPES WITH DEFAULT |
-- CONSTRAINTS RAISE CONSTRAINT_ERROR IF THE ACTUAL PARAMETER IS |
-- CONSTRAINED AND THE CONSTRAINT VALUES OF THE OBJECT BEING |
-- ASSIGNED TO DO NOT SATISFY THOSE OF THE ACTUAL PARAMETER. |
|
-- SUBTESTS ARE: |
-- (A) CONSTRAINED ACTUAL PARAMETERS OF RECORD TYPE. |
-- (B) CONSTRAINED ACTUAL PARAMETERS OF PRIVATE TYPE. |
-- (C) CONSTRAINED ACTUAL PARAMETERS OF LIMITED PRIVATE TYPE. |
|
-- DAS 1/16/81 |
-- VKG 1/7/83 |
-- CPP 8/9/84 |
|
WITH REPORT; |
PROCEDURE C64106C IS |
|
USE REPORT; |
|
BEGIN |
|
TEST ("C64106C", "CHECK ASSIGNMENTS TO FORMAL PARAMETERS OF " & |
"UNCONSTRAINED TYPES (WITH DEFAULTS)"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
|
REC91,REC92,REC93 : RECTYPE(9); |
REC_OOPS : RECTYPE(4); |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
END PKG; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
IF (NOT REC11'CONSTRAINED) OR |
(REC11.CONSTRAINT /= IDENT_INT(9)) THEN |
FAILED ("CONSTRAINT ON RECORD " & |
"TYPE IN PARAMETER " & |
"NOT RECOGNIZED"); |
END IF; |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
FAILED ("CONSTRAINT ERROR NOT RAISED - " & |
"A.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"A.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - " & |
"A.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"A.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
BEGIN -- (A) |
|
PKG.P (PKG.REC91, PKG.REC92, PKG.REC93); |
|
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS PRIVATE; |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
|
PRIVATE |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC91, REC92, REC93 : PKG.RECTYPE(9); |
REC_OOPS : PKG.RECTYPE(4); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
IF (NOT REC11'CONSTRAINED) OR |
(REC11.CONSTRAINT /= IDENT_INT(9)) THEN |
FAILED ("CONSTRAINT ON PRIVATE " & |
"TYPE IN PARAMETER " & |
"NOT RECOGNIZED"); |
END IF; |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
FAILED ("CONSTRAINT ERROR NOT RAISED - " & |
"B.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"B.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - " & |
"B.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"B.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
BEGIN -- (B) |
|
PKG.P (REC91, REC92, REC93); |
|
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
LIMITED PRIVATE; |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
|
PRIVATE |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC91,REC92,REC93 : PKG.RECTYPE(9); |
REC_OOPS : PKG.RECTYPE(4); |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
IF (NOT REC11'CONSTRAINED) OR |
(REC11.CONSTRAINT /= 9) THEN |
FAILED ("CONSTRAINT ON LIMITED PRIVATE " & |
"TYPE IN PARAMETER " & |
"NOT RECOGNIZED"); |
END IF; |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
FAILED ("CONSTRAINT ERROR NOT RAISED - " & |
"C.1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"C.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
FAILED ("CONSTRAINT_ERROR NOT RAISED - " & |
"C.2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - " & |
"C.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
BEGIN -- (C) |
|
PKG.P (REC91, REC92, REC93); |
|
END; -- (C) |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64106C; |
/c67005c.ada
0,0 → 1,109
-- C67005C.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. |
--* |
-- CHECK THAT A DECLARATION OF "=" NEED NOT HAVE PARAMETERS |
-- OF A LIMITED TYPE IN A RENAMING DECLARATION. THIS TEST CHECKS |
-- ACCESS TYPES. |
|
-- BRYCE BARDIN (HUGHES AIRCRAFT) 7/2/84 |
-- CPP 7/12/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67005C IS |
|
GENERIC |
TYPE T IS LIMITED PRIVATE; |
WITH FUNCTION EQUAL (LEFT, RIGHT : T) RETURN BOOLEAN IS <>; |
PACKAGE EQUALITY IS |
FUNCTION "=" (LEFT, RIGHT : T) RETURN BOOLEAN; |
-- PRAGMA INLINE ("="); |
END EQUALITY; |
|
PACKAGE BODY EQUALITY IS |
FUNCTION "=" (LEFT, RIGHT : T) RETURN BOOLEAN IS |
BEGIN |
RETURN EQUAL (LEFT, RIGHT); |
END "="; |
END EQUALITY; |
|
PACKAGE STARTER IS |
TYPE INT IS PRIVATE; |
FUNCTION VALUE_OF (I : INTEGER) RETURN INT; |
FUNCTION EQUAL (LEFT, RIGHT : INT) RETURN BOOLEAN; |
PRIVATE |
TYPE INT IS ACCESS INTEGER; |
END STARTER; |
|
PACKAGE BODY STARTER IS |
FUNCTION VALUE_OF (I : INTEGER) RETURN INT IS |
BEGIN |
RETURN NEW INTEGER'(I); |
END VALUE_OF; |
|
FUNCTION EQUAL (LEFT, RIGHT : INT) RETURN BOOLEAN IS |
BEGIN |
RETURN LEFT.ALL = RIGHT.ALL; |
END EQUAL; |
END STARTER; |
|
PACKAGE ABSTRACTION IS |
TYPE INT IS NEW STARTER.INT; |
PACKAGE INT_EQUALITY IS NEW EQUALITY (INT, EQUAL); |
FUNCTION "=" (LEFT, RIGHT : INT) RETURN BOOLEAN |
RENAMES INT_EQUALITY."="; |
END ABSTRACTION; |
USE ABSTRACTION; |
|
BEGIN |
|
TEST ("C67005C", "RENAMING OF EQUALITY OPERATOR WITH " & |
"NON-LIMITED PARAMETERS"); |
|
DECLARE |
|
I : INT := VALUE_OF(1); |
J : INT := VALUE_OF(0); |
|
PROCEDURE CHECK (B : BOOLEAN) IS |
BEGIN |
IF I = J AND B THEN |
COMMENT ("I = J"); |
ELSIF I /= J AND NOT B THEN |
COMMENT ("I /= J"); |
ELSE |
FAILED ("WRONG ""="" OPERATOR"); |
END IF; |
END CHECK; |
|
BEGIN |
|
CHECK(FALSE); |
I := VALUE_OF(0); |
CHECK(TRUE); |
|
RESULT; |
|
END; |
|
END C67005C; |
/c64106d.ada
0,0 → 1,280
-- C64106D.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. |
--* |
-- CHECK THAT ASSIGNMENTS TO FORMAL PARAMETERS OF UNCONSTRAINED |
-- RECORD, PRIVATE, AND LIMITED PRIVATE TYPES WITH DEFAULT |
-- CONSTRAINTS DO NOT RAISE CONSTRAINT_ERROR IF THE ACTUAL PARAMETER |
-- IS UNCONSTRAINED, EVEN IF THE CONSTRAINT VALUES OF THE OBJECT |
-- BEING ASSIGNED ARE DIFFERENT THAN THOSE OF THE ACTUAL PARAMETER. |
|
-- SUBTESTS ARE: |
-- (A) UNCONSTRAINED ACTUAL PARAMETERS OF RECORD TYPE. |
-- (B) UNCONSTRAINED ACTUAL PARAMETERS OF PRIVATE TYPE. |
-- (C) UNCONSTRAINED ACTUAL PARAMETERS OF LIMITED PRIVATE TYPE. |
|
-- JRK 4/16/81 |
-- CPP 8/9/84 |
-- JRK 11/28/84 |
|
WITH REPORT; |
PROCEDURE C64106D IS |
|
USE REPORT; |
|
BEGIN |
|
TEST ("C64106D", "CHECK ASSIGNMENTS TO FORMAL PARAMETERS OF " & |
"UNCONSTRAINED TYPES WITH UNCONSTRAINED " & |
"ACTUAL PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
END PKG; |
|
REC91, REC92, REC93 : PKG.RECTYPE := |
(IDENT_INT(5), 5, IDENT_STR("12345")); |
REC_OOPS : PKG.RECTYPE; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
|
IF NOT REC11'CONSTRAINED THEN |
FAILED ("REC11 IS NOT CONSTRAINED - A.1"); |
END IF; |
IF REC11.CONSTRAINT /= IDENT_INT(9) THEN |
FAILED ("REC11 CONSTRAINT IS NOT 9 " & |
"- A.1"); |
END IF; |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - A.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - A.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
USE PKG; |
|
BEGIN -- (A) |
|
PKG.P (REC91, REC92, REC93); |
IF (REC92 /= REC_OOPS) OR (REC93 /= REC_OOPS) THEN |
FAILED ("RESULTANT VALUE OF REC92 OR REC93 INCORRECT"); |
END IF; |
|
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS PRIVATE; |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
|
PRIVATE |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC91, REC92, REC93 : PKG.RECTYPE; |
REC_OOPS : PKG.RECTYPE; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
|
IF REC3'CONSTRAINED THEN |
FAILED ("REC3 IS CONSTRAINED - B.1"); |
END IF; |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - B.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - B.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
BEGIN -- (B) |
|
PKG.P (REC91, REC92, REC93); |
|
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
PACKAGE PKG IS |
|
SUBTYPE INTRANGE IS INTEGER RANGE 0..31; |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
LIMITED PRIVATE; |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE); |
|
PRIVATE |
|
TYPE RECTYPE (CONSTRAINT : INTRANGE := 15) IS |
RECORD |
INTFLD : INTRANGE; |
STRFLD : STRING(1..CONSTRAINT); |
END RECORD; |
END PKG; |
|
REC91, REC92, REC93 : PKG.RECTYPE; |
REC_OOPS : PKG.RECTYPE; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE P (REC1 : IN RECTYPE; REC2 : IN OUT RECTYPE; |
REC3 : OUT RECTYPE) IS |
|
PROCEDURE P1 (REC11 : IN RECTYPE; |
REC12 : IN OUT RECTYPE; |
REC13 : OUT RECTYPE) IS |
BEGIN |
|
BEGIN -- ASSIGNMENT TO IN OUT PARAMETER |
REC12 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - C.1"); |
END; |
|
BEGIN -- ASSIGNMENT TO OUT PARAMETER |
REC13 := REC_OOPS; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED - C.2"); |
END; |
END P1; |
|
BEGIN |
P1 (REC1, REC2, REC3); |
END P; |
|
BEGIN |
|
REC91 := (9, 9, "123456789"); |
REC92 := REC91; |
REC93 := REC91; |
|
REC_OOPS := (4, 4, "OOPS"); |
|
END PKG; |
|
BEGIN -- (C) |
|
PKG.P (REC91, REC92, REC93); |
|
END; -- (C) |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64106D; |
/c67005d.ada
0,0 → 1,78
-- C67005D.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. |
--* |
-- CHECK THAT EQUALITY CAN BE REDEFINED FOR AN ARBITRARY TYPE BY USING A |
-- SEQUENCE OF RENAMING DECLARATIONS. |
|
-- JBG 9/11/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67005D IS |
|
FUNCTION MY_EQUALS (L, R : INTEGER) RETURN BOOLEAN IS |
BEGIN |
RETURN FALSE; |
END MY_EQUALS; |
|
GENERIC |
TYPE LP IS LIMITED PRIVATE; |
WITH FUNCTION "=" (L, R : LP) RETURN BOOLEAN; |
PACKAGE EQUALITY_OPERATOR IS |
PACKAGE INNER IS |
FUNCTION "=" (L, R : LP) RETURN BOOLEAN RENAMES |
EQUALITY_OPERATOR."="; |
END INNER; |
END EQUALITY_OPERATOR; |
|
BEGIN |
TEST ("C67005D", "CHECK REDEFINITION OF ""="" BY RENAMING"); |
|
DECLARE |
|
CHK1 : BOOLEAN := 3 = IDENT_INT(3); -- PREDEFINED "=" |
|
-- REDEFINE INTEGER "=". |
|
PACKAGE INT_EQUALITY IS NEW |
EQUALITY_OPERATOR (INTEGER, MY_EQUALS); |
FUNCTION "=" (L, R : INTEGER) RETURN BOOLEAN RENAMES |
INT_EQUALITY.INNER."="; |
|
CHK2 : BOOLEAN := 3 = IDENT_INT(3); -- REDEFINED "=". |
|
BEGIN |
|
IF NOT CHK1 THEN |
FAILED ("PREDEFINED ""="" NOT USED"); |
END IF; |
|
IF CHK2 THEN |
FAILED ("REDEFINED ""="" NOT USED"); |
END IF; |
|
END; |
|
RESULT; |
|
END C67005D; |
/c631001.a
0,0 → 1,134
-- C631001.A |
-- |
-- 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 if different forms of a name are used in the default |
-- expression of a discriminant part, the selector may be an operator |
-- symbol or a character literal. |
-- |
-- TEST DESCRIPTION: |
-- This transition test defines private types where their selectors in |
-- the default expression of the discriminant parts at the full type |
-- declarations are an operator and a literal, respectively. |
-- The test also declares procedures that use an operator and a literal |
-- as selectors in the formal parts. |
-- |
-- Inspired by B63102A.ADA. |
-- |
-- |
-- CHANGE HISTORY: |
-- 25 Mar 96 SAIC Initial version for ACVC 2.1. |
-- 26 Feb 97 PWB.CTA Removed use of function called before elaboration |
--! |
|
with Report; |
|
procedure C631001 is |
|
package C631001_0 is |
|
type Int_Type is range 1 .. 100; |
type Enu_Type is ('A', 'B', 'C', 'D'); |
|
type Private_Enu (D : Enu_Type := 'B') is private; |
|
function "+" (X, Y : Int_Type) return Int_Type; |
|
procedure Int_Proc (P1 : in Int_Type := "+" (10, 15); |
P2 : out Int_Type); |
|
procedure Enu_Proc (P1 : in Enu_Type := 'C'; |
P2 : out Enu_Type); |
|
private |
|
type Private_Enu (D : Enu_Type := C631001_0.'B') is -- OK. |
record |
C2 : Enu_Type := D; |
end record; |
|
----------------------------------------------------------------- |
PE_Obj : C631001_0.Private_Enu; |
|
end C631001_0; |
|
--==================================================================-- |
|
package body C631001_0 is |
|
function "+" (X, Y : Int_Type) return Int_Type is |
begin |
return 10; |
end "+"; |
|
----------------------------------------------------------------- |
procedure Int_Proc (P1 : in Int_Type := C631001_0."+" (10, 15); -- OK. |
P2 : out Int_Type) is |
|
begin |
P2 := P1; |
end Int_Proc; |
|
----------------------------------------------------------------- |
procedure Enu_Proc (P1 : in Enu_Type := C631001_0.'C'; -- OK. |
P2 : out Enu_Type) is |
begin |
P2 := P1; |
end Enu_Proc; |
|
----------------------------------------------------------------- |
|
end C631001_0; |
|
--------------------------------------------------------------------------- |
Int_Obj : C631001_0.Int_Type := 50; |
Enu_Obj : C631001_0.Enu_Type := C631001_0.'D'; |
|
-- Direct visibility to operator symbols |
use type C631001_0.Int_Type; |
use type C631001_0.Enu_Type; |
|
begin -- main |
|
Report.Test ("C631001", "Check that if different forms of a name are " & |
"used in the default expression of a discriminant part, " & |
"the selector may be an operator symbol or a character " & |
"literal"); |
|
C631001_0.Int_Proc (P2 => Int_Obj); |
|
if Int_Obj /= 10 then |
Report.Failed ("Wrong result for Int_Obj"); |
end if; |
|
C631001_0.Enu_Proc (P2 => Enu_Obj); |
|
if Enu_Obj /= 'C' then |
Report.Failed ("Wrong result for Enu_Obj"); |
end if; |
|
Report.Result; |
|
end C631001; |
/c61010a.ada
0,0 → 1,246
-- C61010A.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. |
--* |
-- CHECK THAT AN IN OR IN OUT FORMAL PARAMETER CAN BE DECLARED WITH A |
-- LIMITED PRIVATE TYPE OR A LIMITED COMPOSITE TYPE. |
|
-- DAS 1/22/81 |
-- JRK 1/20/84 TOTALLY REVISED. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C61010A IS |
|
PACKAGE PKG IS |
|
TYPE ITYPE IS LIMITED PRIVATE; |
|
PROCEDURE LOOK_IN_I (X : IN ITYPE; V : INTEGER; M : STRING); |
|
PROCEDURE LOOK_INOUT_I (X : IN OUT ITYPE; V : INTEGER; |
M : STRING); |
|
PROCEDURE SET_I (X : IN OUT ITYPE; V : INTEGER); |
|
SUBTYPE INT_0_20 IS INTEGER RANGE 0 .. 20; |
TYPE VRTYPE (C : INT_0_20 := 20) IS LIMITED PRIVATE; |
|
PROCEDURE LOOK_IN_VR (X : IN VRTYPE; C : INTEGER; I : INTEGER; |
S : STRING; M : STRING); |
|
PROCEDURE LOOK_INOUT_VR (X : IN OUT VRTYPE; C : INTEGER; |
I : INTEGER; S : STRING; |
M : STRING); |
|
PROCEDURE SET_VR (X : IN OUT VRTYPE; C : INTEGER; I : INTEGER; |
S : STRING); |
|
PRIVATE |
|
TYPE ITYPE IS NEW INTEGER RANGE 0 .. 99; |
|
TYPE VRTYPE (C : INT_0_20 := 20) IS |
RECORD |
I : INTEGER; |
S : STRING (1 .. C); |
END RECORD; |
|
END PKG; |
|
USE PKG; |
|
I1 : ITYPE; |
|
TYPE ATYPE IS ARRAY (1 .. 3) OF ITYPE; |
|
A1 : ATYPE; |
|
VR1 : VRTYPE; |
|
D : CONSTANT INT_0_20 := 10; |
|
TYPE RTYPE IS |
RECORD |
J : ITYPE; |
R : VRTYPE (D); |
END RECORD; |
|
R1 : RTYPE; |
|
PACKAGE BODY PKG IS |
|
PROCEDURE LOOK_IN_I (X : IN ITYPE; V : INTEGER; M : STRING) IS |
BEGIN |
IF INTEGER (X) /= V THEN |
FAILED ("WRONG SCALAR VALUE - " & M); |
END IF; |
END LOOK_IN_I; |
|
PROCEDURE LOOK_INOUT_I (X : IN OUT ITYPE; V : INTEGER; |
M : STRING) IS |
BEGIN |
IF INTEGER (X) /= V THEN |
FAILED ("WRONG SCALAR VALUE - " & M); |
END IF; |
END LOOK_INOUT_I; |
|
PROCEDURE SET_I (X : IN OUT ITYPE; V : INTEGER) IS |
BEGIN |
X := ITYPE (IDENT_INT (V)); |
END SET_I; |
|
PROCEDURE LOOK_IN_VR (X : IN VRTYPE; C : INTEGER; I : INTEGER; |
S : STRING; M : STRING) IS |
BEGIN |
IF (X.C /= C OR X.I /= I) OR ELSE X.S /= S THEN |
FAILED ("WRONG COMPOSITE VALUE - " & M); |
END IF; |
END LOOK_IN_VR; |
|
PROCEDURE LOOK_INOUT_VR (X : IN OUT VRTYPE; C : INTEGER; |
I : INTEGER; S : STRING; |
M : STRING) IS |
BEGIN |
IF (X.C /= C OR X.I /= I) OR ELSE X.S /= S THEN |
FAILED ("WRONG COMPOSITE VALUE - " & M); |
END IF; |
END LOOK_INOUT_VR; |
|
PROCEDURE SET_VR (X : IN OUT VRTYPE; C : INTEGER; I : INTEGER; |
S : STRING) IS |
BEGIN |
X := (IDENT_INT(C), IDENT_INT(I), IDENT_STR(S)); |
END SET_VR; |
|
BEGIN |
I1 := ITYPE (IDENT_INT(2)); |
|
FOR I IN A1'RANGE LOOP |
A1 (I) := ITYPE (3 + IDENT_INT(I)); |
END LOOP; |
|
VR1 := (IDENT_INT(5), IDENT_INT(4), IDENT_STR("01234")); |
|
R1.J := ITYPE (IDENT_INT(6)); |
R1.R := (IDENT_INT(D), IDENT_INT(19), |
IDENT_STR("ABCDEFGHIJ")); |
END PKG; |
|
PROCEDURE CHECK_IN_I (X : IN ITYPE; V : INTEGER; M : STRING) IS |
BEGIN |
LOOK_IN_I (X, V, M); |
END CHECK_IN_I; |
|
PROCEDURE CHECK_INOUT_I (X : IN OUT ITYPE; OV : INTEGER; |
NV : INTEGER; M : STRING) IS |
BEGIN |
LOOK_INOUT_I (X, OV, M & " - A"); |
SET_I (X, NV); |
LOOK_INOUT_I (X, NV, M & " - B"); |
LOOK_IN_I (X, NV, M & " - C"); |
END CHECK_INOUT_I; |
|
PROCEDURE CHECK_IN_A (X : IN ATYPE; V : INTEGER; M : STRING) IS |
BEGIN |
FOR I IN X'RANGE LOOP |
LOOK_IN_I (X(I), V+I, M & " -" & INTEGER'IMAGE (I)); |
END LOOP; |
END CHECK_IN_A; |
|
PROCEDURE CHECK_INOUT_A (X : IN OUT ATYPE; OV : INTEGER; |
NV : INTEGER; M : STRING) IS |
BEGIN |
FOR I IN X'RANGE LOOP |
LOOK_INOUT_I (X(I), OV+I, M & " - A" & |
INTEGER'IMAGE (I)); |
SET_I (X(I), NV+I); |
LOOK_INOUT_I (X(I), NV+I, M & " - B" & |
INTEGER'IMAGE (I)); |
LOOK_IN_I (X(I), NV+I, M & " - C" & INTEGER'IMAGE (I)); |
END LOOP; |
END CHECK_INOUT_A; |
|
PROCEDURE CHECK_IN_VR (X : IN VRTYPE; C : INTEGER; I : INTEGER; |
S : STRING; M : STRING) IS |
BEGIN |
LOOK_IN_VR (X, C, I, S, M); |
END CHECK_IN_VR; |
|
PROCEDURE CHECK_INOUT_VR (X : IN OUT VRTYPE; |
OC : INTEGER; OI : INTEGER; OS : STRING; |
NC : INTEGER; NI : INTEGER; NS : STRING; |
M : STRING) IS |
BEGIN |
LOOK_INOUT_VR (X, OC, OI, OS, M & " - A"); |
SET_VR (X, NC, NI, NS); |
LOOK_INOUT_VR (X, NC, NI, NS, M & " - B"); |
LOOK_IN_VR (X, NC, NI, NS, M & " - C"); |
END CHECK_INOUT_VR; |
|
PROCEDURE CHECK_IN_R (X : IN RTYPE; J : INTEGER; C : INTEGER; |
I : INTEGER; S : STRING; M : STRING) IS |
BEGIN |
LOOK_IN_I (X.J, J, M & " - A"); |
LOOK_IN_VR (X.R, C, I, S, M & " - B"); |
END CHECK_IN_R; |
|
PROCEDURE CHECK_INOUT_R (X : IN OUT RTYPE; OJ : INTEGER; |
OC : INTEGER; OI : INTEGER; OS : STRING; |
NJ : INTEGER; |
NC : INTEGER; NI : INTEGER; NS : STRING; |
M : STRING) IS |
BEGIN |
LOOK_INOUT_I (X.J, OJ, M & " - A"); |
LOOK_INOUT_VR (X.R, OC, OI, OS, M & " - B"); |
SET_I (X.J, NJ); |
SET_VR (X.R, NC, NI, NS); |
LOOK_INOUT_I (X.J, NJ, M & " - C"); |
LOOK_INOUT_VR (X.R, NC, NI, NS, M & " - D"); |
LOOK_IN_I (X.J, NJ, M & " - E"); |
LOOK_IN_VR (X.R, NC, NI, NS, M & " - F"); |
END CHECK_INOUT_R; |
|
BEGIN |
TEST ("C61010A", "CHECK THAT LIMITED PRIVATE/COMPOSITE TYPES " & |
"CAN BE USED AS IN OR IN OUT FORMAL PARAMETERS"); |
|
CHECK_IN_I (I1, 2, "IN I"); |
|
CHECK_INOUT_I (I1, 2, 5, "INOUT I"); |
|
CHECK_IN_A (A1, 3, "IN A"); |
|
CHECK_INOUT_A (A1, 3, 17, "INOUT A"); |
|
CHECK_IN_VR (VR1, 5, 4, "01234", "IN VR"); |
|
CHECK_INOUT_VR (VR1, 5, 4, "01234", 10, 11, "9876543210", |
"INOUT VR"); |
|
CHECK_IN_R (R1, 6, D, 19, "ABCDEFGHIJ", "IN R"); |
|
CHECK_INOUT_R (R1, 6, D, 19, "ABCDEFGHIJ", 13, D, 5, "ZYXWVUTSRQ", |
"INOUT R"); |
|
RESULT; |
END C61010A; |
/c62002a.ada
0,0 → 1,190
-- C62002A.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. |
--* |
-- CHECK THAT THE COMPONENTS OF ACCESS IN PARAMETERS CAN BE USED AS THE |
-- TARGET OF AN ASSIGNMENT STATEMENT OR AS AN ACTUAL PARAMETER OF |
-- ANY MODE. SUBTESTS ARE: |
-- (A) INTEGER ACCESS TYPE. |
-- (B) ARRAY ACCESS TYPE. |
-- (C) RECORD ACCESS TYPE. |
|
-- DAS 1/23/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C62002A IS |
|
USE REPORT; |
|
BEGIN |
|
TEST ("C62002A", "CHECK THAT COMPONENTS OF ACCESS IN PARAMETERS" & |
" MAY BE USED IN ASSIGNMENT CONTEXTS"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
TYPE PTRINT IS ACCESS INTEGER; |
PI : PTRINT; |
|
PROCEDURE PROCA (PI : IN PTRINT) IS |
|
PROCEDURE PROCA1 (I : OUT INTEGER) IS |
BEGIN |
I := 7; |
END PROCA1; |
|
PROCEDURE PROCA2 (I : IN OUT INTEGER) IS |
BEGIN |
I := I + 1; |
END PROCA2; |
BEGIN |
|
PROCA1 (PI.ALL); |
PROCA2 (PI.ALL); |
PI.ALL := PI.ALL + 1; |
IF (PI.ALL /= 9) THEN |
FAILED ("ASSIGNMENT TO COMPONENT OF INTEGER" & |
" ACCESS PARAMETER FAILED"); |
END IF; |
END PROCA; |
|
BEGIN -- (A) |
|
PI := NEW INTEGER '(0); |
PROCA (PI); |
|
END; -- (A) |
|
--------------------------------------------- |
|
DECLARE -- (B) |
|
TYPE TBL IS ARRAY (1..3) OF INTEGER; |
TYPE PTRTBL IS ACCESS TBL; |
PT : PTRTBL; |
|
PROCEDURE PROCB (PT : IN PTRTBL) IS |
|
PROCEDURE PROCB1 (I : OUT INTEGER) IS |
BEGIN |
I := 7; |
END PROCB1; |
|
PROCEDURE PROCB2 (I : IN OUT INTEGER) IS |
BEGIN |
I := I + 1; |
END PROCB2; |
|
PROCEDURE PROCB3 (T : OUT TBL) IS |
BEGIN |
T := (1,2,3); |
END PROCB3; |
|
PROCEDURE PROCB4 (T : IN OUT TBL) IS |
BEGIN |
T(3) := T(3) - 1; |
END PROCB4; |
|
BEGIN |
|
PROCB3 (PT.ALL); -- (1,2,3) |
PROCB4 (PT.ALL); -- (1,2,2) |
PROCB1 (PT(2)); -- (1,7,2) |
PROCB2 (PT(1)); -- (2,7,2) |
PT(3) := PT(3) + 7; -- (2,7,9) |
IF (PT.ALL /= (2,7,9)) THEN |
FAILED ("ASSIGNMENT TO COMPONENT OF ARRAY" & |
" ACCESS PARAMETER FAILED"); |
END IF; |
END PROCB; |
|
BEGIN -- (B) |
|
PT := NEW TBL '(0,0,0); |
PROCB (PT); |
|
END; -- (B) |
|
--------------------------------------------- |
|
DECLARE -- (C) |
|
TYPE REC IS |
RECORD |
I1 : INTEGER; |
I2 : INTEGER; |
I3 : INTEGER; |
END RECORD; |
TYPE PTRREC IS ACCESS REC; |
PR : PTRREC; |
|
PROCEDURE PROCC (PR : IN PTRREC) IS |
|
PROCEDURE PROCC1 (I : OUT INTEGER) IS |
BEGIN |
I := 7; |
END PROCC1; |
|
PROCEDURE PROCC2 (I : IN OUT INTEGER) IS |
BEGIN |
I := I + 1; |
END PROCC2; |
|
PROCEDURE PROCC3 (R : OUT REC) IS |
BEGIN |
R := (1,2,3); |
END PROCC3; |
|
PROCEDURE PROCC4 (R : IN OUT REC) IS |
BEGIN |
R.I3 := R.I3 - 1; |
END PROCC4; |
|
BEGIN |
|
PROCC3 (PR.ALL); -- (1,2,3) |
PROCC4 (PR.ALL); -- (1,2,2) |
PROCC1 (PR.I2); -- (1,7,2) |
PROCC2 (PR.I1); -- (2,7,2) |
PR.I3 := PR.I3 + 7; -- (2,7,9) |
IF (PR.ALL /= (2,7,9)) THEN |
FAILED ("ASSIGNMENT TO COMPONENT OF RECORD" & |
" ACCESS PARAMETER FAILED"); |
END IF; |
END PROCC; |
|
BEGIN -- (C) |
|
PR := NEW REC '(0,0,0); |
PROCC (PR); |
|
END; -- (C) |
|
--------------------------------------------- |
|
RESULT; |
|
END C62002A; |
/c64002b.ada
0,0 → 1,65
-- C64002B.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. |
--* |
-- CHECK THAT PARAMETERLESS SUBPROGRAMS CAN BE CALLED WITH APPROPRIATE |
-- NOTATION. |
|
-- DAS 1/27/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64002B IS |
|
USE REPORT; |
|
I : INTEGER := 1; |
|
FUNCTION F0 RETURN INTEGER IS |
BEGIN |
RETURN 7; |
END F0; |
|
PROCEDURE P0 IS |
BEGIN |
I := 15; |
END P0; |
|
BEGIN |
|
TEST ("C64002B", "CHECK THAT PARAMETERLESS SUBPROGRAMS CAN BE" & |
" CALLED"); |
|
IF (F0 /= 7) THEN |
FAILED ("PARAMETERLESS FUNCTION CALL RETURNS BAD VALUE"); |
END IF; |
|
P0; |
IF (I /= 15) THEN |
FAILED ("PARAMETERLESS PROCEDURE CALL YIELDS INCORRECT" & |
" RESULT"); |
END IF; |
|
RESULT; |
|
END C64002B; |
/c66002a.ada
0,0 → 1,104
-- C66002A.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (A) ONE SUBPROGRAM IS A FUNCTION; THE OTHER IS A PROCEDURE. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
-- SPS 11/2/82 |
|
WITH REPORT; |
PROCEDURE C66002A IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002A", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- ONE SUBPROGRAM IS A PROCEDURE; THE OTHER IS |
-- A FUNCTION. BOTH PARAMETERIZED AND PARAMETERLESS |
-- SUBPROGRAMS ARE TESTED. |
|
DECLARE |
I, J, K : INTEGER := 0; |
S : STRING (1..2) := "12"; |
|
PROCEDURE P1 (I1, I2 : INTEGER) IS |
BEGIN |
S(1) := 'A'; |
END P1; |
|
FUNCTION P1 (I1, I2 : INTEGER) RETURN INTEGER IS |
BEGIN |
S(2) := 'B'; |
RETURN I1; -- RETURNED VALUE IS IRRELEVENT. |
END P1; |
|
PROCEDURE P2 IS |
BEGIN |
S(1) := 'C'; |
END P2; |
|
FUNCTION P2 RETURN INTEGER IS |
BEGIN |
S(2) := 'D'; |
RETURN I; -- RETURNED VALUE IS IRRELEVENT. |
END P2; |
|
BEGIN |
P1 (I, J); |
K := P1 (I, J); |
|
IF S /= "AB" THEN |
FAILED ("PARAMETERIZED OVERLOADED " & |
"SUBPROGRAMS, ONE A PROCEDURE AND " & |
"THE OTHER A FUNCTION, CAUSED " & |
"CONFUSION"); |
END IF; |
|
S := "12"; |
P2; |
K := P2 ; |
|
IF S /= "CD" THEN |
FAILED ("PARAMETERLESS OVERLOADED " & |
"SUBPROGRAMS, ONE A PROCEDURE AND " & |
"THE OTHER A FUNCTION, CAUSED " & |
"CONFUSION"); |
END IF; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002A; |
/c62006a.ada
0,0 → 1,70
-- C62006A.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. |
--* |
-- CHECK THAT THE DISCRIMINANTS OF AN OUT FORMAL PARAMETER, AS WELL AS |
-- THE DISCRIMINANTS OF THE SUBCOMPONENTS OF AN OUT FORMAL PARAMETER, |
-- MAY BE READ INSIDE THE PROCEDURE. |
|
-- SPS 2/17/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C62006A IS |
BEGIN |
|
TEST ("C62006A", "CHECK THAT THE DISCRIMINANTS OF AN OUT FORMAL " & |
"PARAMETER CAN BE READ INSIDE THE PROCEDURE"); |
|
DECLARE |
|
TYPE R1 (D1 : INTEGER) IS RECORD |
NULL; |
END RECORD; |
|
TYPE R2 (D2 : POSITIVE) IS RECORD |
C : R1 (2); |
END RECORD; |
|
R : R2 (5); |
|
PROCEDURE P (REC : OUT R2) IS |
BEGIN |
|
IF REC.D2 /= 5 THEN |
FAILED ("UNABLE TO CORRECTLY READ DISCRIMINANT OF" & |
" OUT PARAMETER"); |
END IF; |
|
IF REC.C.D1 /= 2 THEN |
FAILED ("UNABLE TO CORRECTLY READ DISCRIMINANT " & |
" OF THE SUBCOMPONENT OF AN OUT PARAMETER"); |
END IF; |
END P; |
|
BEGIN |
P (R); |
END; |
|
RESULT; |
|
END C62006A; |
/c67002a.ada
0,0 → 1,426
-- C67002A.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. |
--* |
-- CHECK THAT ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED) |
-- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS. |
-- SUBTESTS ARE: |
-- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=", |
-- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-", |
-- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS. |
-- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY, |
-- WITH ONE PARAMETER. |
|
-- CVP 5/7/81 |
-- JRK 6/1/81 |
-- CPP 6/25/84 |
|
WITH REPORT; |
PROCEDURE C67002A IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C67002A", "USE OF OPERATOR SYMBOLS IN " & |
"(OVERLOADED) FUNCTION SPECIFICATIONS"); |
|
------------------------------------------------- |
|
DECLARE -- (A) |
PACKAGE EQU IS |
TYPE LP IS LIMITED PRIVATE; |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN; |
PRIVATE |
TYPE LP IS NEW INTEGER; |
END EQU; |
USE EQU; |
|
LP1, LP2 : LP; |
|
PACKAGE BODY EQU IS |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN LPA > LPB; |
END "="; |
BEGIN |
LP1 := LP (IDENT_INT (7)); |
LP2 := LP (IDENT_INT (8)); |
END EQU; |
|
BEGIN -- (A) |
IF (LP1 = LP2) OR NOT (LP2 = LP1) OR |
(LP1 = LP1) OR (LP2 /= LP1) THEN |
FAILED ("OVERLOADING OF ""="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (A) |
|
------------------------------------------------- |
|
DECLARE -- (B) |
FUNCTION "AND" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "AND"; |
|
BEGIN -- (B) |
IF (IDENT_INT (10) AND 1) /= 'G' OR |
(5 AND 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (B) |
|
------------------------------------------------- |
|
DECLARE -- (C) |
FUNCTION "OR" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "OR"; |
|
BEGIN -- (C) |
IF (IDENT_INT (10) OR 1) /= 'G' OR |
(5 OR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (C) |
|
------------------------------------------------- |
|
DECLARE -- (D) |
FUNCTION "XOR" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "XOR"; |
|
BEGIN -- (D) |
IF (IDENT_INT (10) XOR 1) /= 'G' OR |
(5 XOR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (D) |
|
------------------------------------------------- |
|
DECLARE -- (E) |
FUNCTION "<" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "<"; |
|
BEGIN -- (E) |
IF (IDENT_INT (10) < 1) /= 'G' OR |
(5 < 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (E) |
|
------------------------------------------------- |
|
DECLARE -- (F) |
FUNCTION "<=" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "<="; |
|
BEGIN -- (F) |
IF (IDENT_INT (10) <= 1) /= 'G' OR |
(5 <= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (F) |
|
------------------------------------------------- |
|
DECLARE -- (G) |
FUNCTION ">" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END ">"; |
|
BEGIN -- (G) |
IF (IDENT_INT (10) > 1) /= 'G' OR |
(5 > 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (G) |
|
------------------------------------------------- |
|
DECLARE -- (H) |
FUNCTION ">=" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END ">="; |
|
BEGIN -- (H) |
IF (IDENT_INT (10) >= 1) /= 'G' OR |
(5 >= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (H) |
|
------------------------------------------------- |
|
DECLARE -- (I) |
FUNCTION "&" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "&"; |
|
BEGIN -- (I) |
IF (IDENT_INT (10) & 1) /= 'G' OR |
(5 & 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""&"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (I) |
|
------------------------------------------------- |
|
DECLARE -- (J) |
FUNCTION "*" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "*"; |
|
BEGIN -- (J) |
IF (IDENT_INT (10) * 1) /= 'G' OR |
(5 * 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""*"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (J) |
|
------------------------------------------------- |
|
DECLARE -- (K) |
FUNCTION "/" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "/"; |
|
BEGIN -- (K) |
IF (IDENT_INT (10) / 1) /= 'G' OR |
(5 / 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""/"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (K) |
|
------------------------------------------------- |
|
DECLARE -- (L) |
FUNCTION "MOD" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "MOD"; |
|
BEGIN -- (L) |
IF (IDENT_INT (10) MOD 1) /= 'G' OR |
(5 MOD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (L) |
|
------------------------------------------------- |
|
DECLARE -- (M) |
FUNCTION "REM" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "REM"; |
|
BEGIN -- (M) |
IF (IDENT_INT (10) REM 1) /= 'G' OR |
(5 REM 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (M) |
|
------------------------------------------------- |
|
DECLARE -- (N) |
FUNCTION "**" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "**"; |
|
BEGIN -- (N) |
IF (IDENT_INT (10) ** 1) /= 'G' OR |
(5 ** 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""**"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (N) |
|
------------------------------------------------- |
|
DECLARE -- (O) |
FUNCTION "+" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "+"; |
|
BEGIN -- (O) |
IF (IDENT_INT (10) + 1) /= 'G' OR |
(5 + 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""+"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (O) |
|
------------------------------------------------- |
|
DECLARE -- (P) |
FUNCTION "-" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "-"; |
|
BEGIN -- (P) |
IF (IDENT_INT (10) - 1) /= 'G' OR |
(5 - 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""-"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (P) |
|
------------------------------------------------- |
|
DECLARE -- (Q) |
FUNCTION "+" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "+"; |
|
BEGIN -- (Q) |
IF (+ IDENT_INT(25) /= 'P') OR |
(+ (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""+"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (Q) |
|
------------------------------------------------- |
|
DECLARE -- (R) |
FUNCTION "-" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "-"; |
|
BEGIN -- (R) |
IF (- IDENT_INT(25) /= 'P') OR |
(- (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""-"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (R) |
|
------------------------------------------------- |
|
DECLARE -- (S) |
FUNCTION "NOT" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "NOT"; |
|
BEGIN -- (S) |
IF (NOT IDENT_INT(25) /= 'P') OR |
(NOT (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""NOT"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (S) |
|
------------------------------------------------- |
|
DECLARE -- (T) |
FUNCTION "ABS" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "ABS"; |
|
BEGIN -- (T) |
IF (ABS IDENT_INT(25) /= 'P') OR |
(ABS (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""ABS"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (T) |
|
------------------------------------------------- |
|
RESULT; |
END C67002A; |
/c64103b.ada
0,0 → 1,379
-- C64103B.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, FOR IN-OUT PARAMETERS OF A SCALAR TYPE, |
-- CONSTRAINT_ERROR IS RAISED: |
-- BEFORE A SUBPROGRAM CALL WHEN THE CONVERTED ACTUAL |
-- PARAMETER IS OUTSIDE THE RANGE OF THE FORMAL PARAMETER'S |
-- SUBTYPE; |
-- AFTER A SUBPROGRAM CALL WHEN THE CONVERTED FORMAL PARAMETER |
-- IS OUTSIDE THE RANGE OF THE ACTUAL PARAMETER'S SUBTYPE. |
|
-- HISTORY: |
-- CPP 07/18/84 CREATED ORIGINAL TEST. |
-- VCL 10/27/87 MODIFIED THIS HEADER; ADDED STATEMENTS WHICH |
-- REFERENCED THE ACTUAL PARAMETERS IN THE SECOND |
-- SUBTEST. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64103B IS |
BEGIN |
TEST ("C64103B", "FOR IN-OUT PARAMETERS OF A SCALAR TYPE, " & |
"CONSTRAINT_ERROR IS RAISED: BEFORE A " & |
"SUBPROGRAM CALL WHEN THE CONVERTED ACTUAL " & |
"PARAMETER IS OUTSIDE THE RANGE OF THE FORMAL " & |
"PARAMETER'S SUBTYPE; AFTER A SUBPROGRAM " & |
"CALL WHEN THE CONVERTED FORMAL PARAMETER IS " & |
"OUTSIDE THE RANGE OF THE ACTUAL PARAMETER'S " & |
"SUBTYPE"); |
|
|
DECLARE |
A0 : INTEGER := -9; |
A1 : INTEGER := IDENT_INT(-1); |
TYPE SUBINT IS RANGE -8 .. -2; |
|
TYPE FLOAT_TYPE IS DIGITS 3 RANGE 0.0 .. 3.0; |
A2 : FLOAT_TYPE := 0.12; |
A3 : FLOAT_TYPE := 2.5; |
TYPE NEW_FLOAT IS DIGITS 3 RANGE 1.0 .. 2.0; |
|
TYPE FIXED_TYPE IS DELTA 1.0 RANGE -2.0 .. 5.0; |
A4 : FIXED_TYPE := -2.0; |
A5 : FIXED_TYPE := 4.0; |
TYPE NEW_FIXED IS DELTA 1.0 RANGE -1.0 .. 3.0; |
|
A6 : CHARACTER := 'A'; |
SUBTYPE SUPER_CHAR IS CHARACTER RANGE 'B'..'Q'; |
|
TYPE COLOR IS (RED, BURGUNDY, LILAC, MAROON, MAGENTA); |
SUBTYPE A_COLOR IS COLOR RANGE RED..LILAC; |
SUBTYPE B_COLOR IS COLOR RANGE MAROON..MAGENTA; |
A7 : B_COLOR := MAROON; |
|
PROCEDURE P1 (X : IN OUT SUBINT; |
S : STRING) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (A" & |
S & ")"); |
END P1; |
|
PROCEDURE P2 (X : IN OUT NEW_FLOAT; |
S : STRING) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P2 (A" & |
S & ")"); |
END P2; |
|
PROCEDURE P3 (X : IN OUT NEW_FIXED; |
S : STRING) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P3 (A" & |
S & ")"); |
END P3; |
|
PROCEDURE P4 (X : IN OUT SUPER_CHAR; |
S : STRING) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P4 (A" & |
S & ")"); |
END P4; |
|
PROCEDURE P5 (X : IN OUT A_COLOR; |
S : STRING) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P5 (A" & |
S & ")"); |
END P5; |
BEGIN |
BEGIN |
P1 (SUBINT (A0), "1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (A1)"); |
END; |
|
BEGIN |
P1 (SUBINT (A1), "2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (A2)"); |
END; |
|
BEGIN |
P2 (NEW_FLOAT (A2), "1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (A1)"); |
END; |
|
BEGIN |
P2 (NEW_FLOAT (A3), "2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (A2)"); |
END; |
|
BEGIN |
P3 (NEW_FIXED (A4), "1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (A1)"); |
END; |
|
BEGIN |
P3 (NEW_FIXED (A5), "2"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (A2)"); |
END; |
|
BEGIN |
P4 (SUPER_CHAR (A6),"1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P4 (A1)"); |
END; |
|
BEGIN |
P5 (A_COLOR (A7), "1"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P5 (A1)"); |
END; |
END; |
|
|
DECLARE |
CALLED : BOOLEAN; |
TYPE SUBINT IS RANGE -8 .. -2; |
A0 : SUBINT := -3; |
A1 : INTEGER := -9; |
A2 : INTEGER := -1; |
|
TYPE FLOAT IS DIGITS 3 RANGE -1.0 .. 2.0; |
TYPE A_FLOAT IS DIGITS 3 RANGE 0.0 .. 1.0; |
A3 : A_FLOAT := 1.0; |
A4 : FLOAT := -0.5; |
A5 : FLOAT := 1.5; |
|
TYPE NEW_FIXED IS DELTA 1.0 RANGE -1.0 .. 3.0; |
A6 : NEW_FIXED := 0.0; |
TYPE FIXED_TYPE IS DELTA 1.0 RANGE -2.0 .. 5.0; |
A7 : FIXED_TYPE := -2.0; |
A8 : FIXED_TYPE := 4.0; |
|
SUBTYPE SUPER_CHAR IS CHARACTER RANGE 'B'..'Q'; |
A9 : SUPER_CHAR := 'C'; |
A10 : CHARACTER := 'A'; |
A11 : CHARACTER := 'R'; |
|
PROCEDURE P1 (X : IN OUT INTEGER; Y : INTEGER) IS |
BEGIN |
CALLED := TRUE; |
X := IDENT_INT (Y); |
END P1; |
|
PROCEDURE P2 (X : IN OUT FLOAT; Y : FLOAT) IS |
BEGIN |
CALLED := TRUE; |
X := Y; |
END P2; |
|
PROCEDURE P3 ( X : IN OUT FIXED_TYPE; Y : FIXED_TYPE) IS |
BEGIN |
CALLED := TRUE; |
X := Y; |
END P3; |
|
PROCEDURE P4 (X : IN OUT CHARACTER; Y : CHARACTER) IS |
BEGIN |
CALLED := TRUE; |
X := IDENT_CHAR(Y); |
END P4; |
BEGIN |
BEGIN |
CALLED := FALSE; |
P1 (INTEGER(A0), A1); |
IF A0 = -3 THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P1 (B1)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B1)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P1 (INTEGER(A0), A2); |
IF A0 = -3 THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B3)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B4)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P1 (B2)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B2)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P2 (FLOAT (A3), A4); |
IF A3 = 1.0 THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P2 (B1)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (B1)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P2 (FLOAT (A3), A5); |
IF A3 = 1.0 THEN |
FAILED ("EXCEPTION NOT RAISED -P2 (B3)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED -P2 (B4)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P2 (B2)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (B2)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P3 (FIXED_TYPE (A6), A7); |
IF A6 = 0.0 THEN |
FAILED ("EXCEPTION NOT RAISED -P3 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED -P3 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P3 (B1)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (B1)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P3 (FIXED_TYPE (A6), A8); |
IF A6 = 0.0 THEN |
FAILED ("EXCEPTION NOT RAISED -P3 (B3)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED -P3 (B4)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P3 (B2)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (B2)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P4 (CHARACTER (A9), A10); |
IF A9 = 'C' THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P4 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P4 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P4 (B1)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P4 (B1)"); |
END; |
|
BEGIN |
CALLED := FALSE; |
P4 (CHARACTER (A9), A11); |
IF A9 = 'C' THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P4 (B3)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P4 (B4)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P4 (B2)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P4 (B2)"); |
END; |
END; |
|
RESULT; |
END C64103B; |
/c67002b.ada
0,0 → 1,176
-- C67002B.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. |
--* |
-- CHECK THAT OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED) |
-- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS. |
-- THIS TEST CHECKS THE CASE OF CERTAIN OPERATOR SYMBOLS. |
-- SUBTESTS ARE: |
-- (A) THROUGH (E): "AND", "OR", "XOR", "MOD", "REM" |
-- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS. |
-- (F) AND (G): "NOT" AND "ABS", RESPECTIVELY, |
-- WITH ONE PARAMETER. |
|
-- CPP 6/26/84 |
|
WITH REPORT; |
PROCEDURE C67002B IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C67002B", "USE OF OPERATOR SYMBOLS IN " & |
"(OVERLOADED) FUNCTION SPECIFICATIONS"); |
|
------------------------------------------------- |
|
DECLARE -- (A) |
FUNCTION "And" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "And"; |
|
BEGIN -- (A) |
IF (IDENT_INT (10) AND 1) /= 'G' OR |
(5 AnD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""And"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (A) |
|
------------------------------------------------- |
|
DECLARE -- (B) |
FUNCTION "or" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "or"; |
|
BEGIN -- (B) |
IF (IDENT_INT (10) Or 1) /= 'G' OR |
(5 OR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""or"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (B) |
|
------------------------------------------------- |
|
DECLARE -- (C) |
FUNCTION "xOR" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "xOR"; |
|
BEGIN -- (C) |
IF (IDENT_INT (10) XoR 1) /= 'G' OR |
(5 xOR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""xOR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (C) |
|
------------------------------------------------- |
|
DECLARE -- (D) |
FUNCTION "mOd" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "mOd"; |
|
BEGIN -- (D) |
IF (IDENT_INT (10) MoD 1) /= 'G' OR |
(5 moD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""mOd"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (D) |
|
------------------------------------------------- |
|
DECLARE -- (E) |
FUNCTION "REM" (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END "REM"; |
|
BEGIN -- (E) |
IF (IDENT_INT (10) rem 1) /= 'G' OR |
(5 Rem 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (E) |
|
------------------------------------------------- |
|
DECLARE -- (F) |
FUNCTION "NOT" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "NOT"; |
|
BEGIN -- (F) |
IF (Not IDENT_INT(25) /= 'P') OR |
(noT (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""NOT"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (F) |
|
------------------------------------------------- |
|
DECLARE -- (G) |
FUNCTION "ABS" (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT (0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END "ABS"; |
|
BEGIN -- (G) |
IF (abs IDENT_INT(25) /= 'P') OR |
(Abs (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""ABS"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (T) |
|
------------------------------------------------- |
|
RESULT; |
END C67002B; |
/c66002c.ada
0,0 → 1,102
-- C66002C.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (C) ONE SUBPROGRAM HAS ONE LESS PARAMETER THAN THE OTHER. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
|
WITH REPORT; |
PROCEDURE C66002C IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002C", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- ONE PROCEDURE HAS ONE MORE PARAMETER |
-- THAN THE OTHER. THIS IS TESTED IN THE |
-- CASE IN WHICH THAT PARAMETER HAS A DEFAULT |
-- VALUE, AND THE CASE IN WHICH IT DOES NOT. |
|
DECLARE |
I, J : INTEGER := 0; |
B : BOOLEAN := TRUE; |
S : STRING (1..2) := "12"; |
|
PROCEDURE P1 (I1, I2 : INTEGER; B1 : IN OUT BOOLEAN) IS |
BEGIN |
S(1) := 'A'; |
END P1; |
|
PROCEDURE P1 (I1, I2 : INTEGER) IS |
BEGIN |
S(2) := 'B'; |
END P1; |
|
PROCEDURE P2 (B1 : IN OUT BOOLEAN; I1 : INTEGER := 0) IS |
BEGIN |
S(1) := 'C'; |
END P2; |
|
PROCEDURE P2 (B1 : IN OUT BOOLEAN) IS |
BEGIN |
S(2) := 'D'; |
END P2; |
|
BEGIN |
P1 (I, J, B); |
P1 (I, J); |
|
IF S /= "AB" THEN |
FAILED ("PROCEDURES DIFFERING ONLY IN " & |
"NUMBER OF PARAMETERS (NO DEFAULTS) " & |
"CAUSED CONFUSION"); |
END IF; |
|
S := "12"; |
P2 (B, I); |
-- NOTE THAT A CALL TO P2 WITH ONLY |
-- ONE PARAMETER IS AMBIGUOUS. |
|
IF S /= "C2" THEN |
FAILED ("PROCEDURES DIFFERING ONLY IN " & |
"EXISTENCE OF ONE PARAMETER (WITH " & |
"DEFAULT) CAUSED CONFUSION"); |
END IF; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002C; |
/c64103c.ada
0,0 → 1,230
-- C64103C.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. |
--* |
-- CHECK THAT THE APPROPRIATE EXCEPTION IS RAISED FOR TYPE CONVERSIONS |
-- ON IN OUT ARRAY PARAMETERS. IN PARTICULAR: |
-- (A) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN THE ACTUAL |
-- COMPONENT'S CONSTRAINTS DIFFER FROM THE FORMAL COMPONENT'S |
-- CONSTRAINTS. |
-- (B) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO |
-- AN UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE |
-- OUTSIDE OF A FORMAL INDEX SUBTYPE FOR A NON-NULL DIMENSION (SEE |
-- AI-00313 FOR MULTIDIMENSIONAL CASE) |
-- (C) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL FOR CONVERSION TO A |
-- CONSTRAINED ARRAY TYPE WHEN THE NUMBER OF COMPONENTS PER |
-- DIMENSION OF THE ACTUAL DIFFERS FROM THAT OF THE FORMAL. |
-- (D) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO AN |
-- UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE |
-- OUTSIDE OF THE BASE INDEX TYPE OF THE FORMAL. |
|
-- *** NOTE: This test has been modified since ACVC version 1.11 to -- 9X |
-- *** remove incompatibilities associated with the transition -- 9X |
-- *** to Ada 9X. -- 9X |
-- *** -- 9X |
|
-- CPP 07/19/84 |
-- JBG 06/05/85 |
-- EG 10/29/85 FIX NUMERIC_ERROR/CONSTRAINT_ERROR ACCORDING TO |
-- AI-00387. |
-- MRM 03/30/93 REMOVE NUMERIC_ERROR FOR 9X COMPATIBILITY |
-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X. |
|
WITH SYSTEM; |
WITH REPORT; USE REPORT; |
PROCEDURE C64103C IS |
|
BEGIN |
TEST ("C64103C", "CHECK THAT APPROPRIATE EXCEPTION IS RAISED ON " & |
"TYPE CONVERSIONS OF IN OUT ARRAY PARAMETERS"); |
|
----------------------------------------------- |
|
DECLARE -- (A) |
BEGIN -- (A) |
|
DECLARE |
TYPE SUBINT IS RANGE 0..8; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
A0 : ARRAY_TYPE (0..3) := (0..3 => TRUE); |
|
PROCEDURE P2 (X : IN OUT ARRAY_TYPE) IS |
BEGIN |
NULL; |
END P2; |
BEGIN |
P2 (ARRAY_TYPE (A0)); -- OK. |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED -P2 (A)"); |
END; |
|
END; -- (A) |
|
----------------------------------------------- |
|
DECLARE -- (B1) NON-NULL ACTUAL PARAMETER |
|
TYPE SUBINT IS RANGE 0..8; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
TYPE AR1 IS ARRAY (INTEGER RANGE <>) OF BOOLEAN; |
A1 : AR1 (-1..7) := (-1..7 => TRUE); |
A2 : AR1 (1..9) := (1..9 => TRUE); |
|
PROCEDURE P1 (X : IN OUT ARRAY_TYPE) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (B)"); |
END P1; |
|
BEGIN -- (B1) |
|
BEGIN |
COMMENT ("CALL TO P1 (B1) ON A1"); |
P1 (ARRAY_TYPE (A1)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B1)"); |
END; |
|
BEGIN |
COMMENT ("CALL TO P1 (B1) ON A2"); |
P1 (ARRAY_TYPE (A2)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B1)"); |
END; |
|
END; -- (B1) |
|
DECLARE -- (B2) NULL ACTUAL PARAMETER; MULTIDIMENSIONAL |
|
TYPE SUBINT IS RANGE 0..8; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>, |
SUBINT RANGE <>) OF BOOLEAN; |
TYPE AR1 IS ARRAY (INTEGER RANGE <>, |
INTEGER RANGE <>)OF BOOLEAN; |
A1 : AR1 (IDENT_INT(-1)..7, 5..4) := |
(OTHERS => (OTHERS => TRUE)); |
A2 : AR1 (5..4, 1..IDENT_INT(9)) := |
(OTHERS => (OTHERS => TRUE)); |
PROCEDURE P1 (X : IN OUT ARRAY_TYPE) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (B)"); |
END P1; |
|
BEGIN -- (B2) |
|
BEGIN |
COMMENT ("CALL TO P1 (B2) ON A1"); |
P1 (ARRAY_TYPE (A1)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B2)"); |
END; |
|
BEGIN |
COMMENT ("CALL TO P1 (B2) ON A2"); |
P1 (ARRAY_TYPE (A2)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B2)"); |
END; |
|
END; -- (B2) |
|
----------------------------------------------- |
|
BEGIN -- (C) |
|
DECLARE |
TYPE INDEX1 IS RANGE 1..3; |
TYPE INDEX2 IS RANGE 1..4; |
TYPE AR_TYPE IS ARRAY (INDEX1, INDEX2) OF BOOLEAN; |
A0 : AR_TYPE := (1..3 => (1..4 => FALSE)); |
|
TYPE I1 IS RANGE 1..4; |
TYPE I2 IS RANGE 1..3; |
TYPE ARRAY_TYPE IS ARRAY (I1, I2) OF BOOLEAN; |
|
PROCEDURE P1 (X : IN OUT ARRAY_TYPE) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (C)"); |
END P1; |
BEGIN |
P1 (ARRAY_TYPE (A0)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (C)"); |
END; |
|
END; -- (C) |
|
----------------------------------------------- |
|
DECLARE -- (D) |
BEGIN -- (D) |
|
DECLARE |
TYPE SM_INT IS RANGE 0..2; |
TYPE LG IS RANGE 0 .. SYSTEM.MAX_INT; |
SUBTYPE LG_INT IS LG RANGE SYSTEM.MAX_INT - 3 .. |
SYSTEM.MAX_INT; |
TYPE AR_SMALL IS ARRAY (SM_INT RANGE <>) OF BOOLEAN; |
TYPE AR_LARGE IS ARRAY (LG_INT RANGE <>) OF BOOLEAN; |
A0 : AR_LARGE (SYSTEM.MAX_INT - 2..SYSTEM.MAX_INT) := |
(SYSTEM.MAX_INT - 2..SYSTEM.MAX_INT => TRUE); |
|
PROCEDURE P1 (X : IN OUT AR_SMALL) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (D)"); |
END P1; |
BEGIN |
IF LG (SM_INT'BASE'LAST) < LG_INT'BASE'LAST THEN |
P1 (AR_SMALL (A0)); |
ELSE |
COMMENT ("NOT APPLICABLE -P1 (D)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COMMENT ("CONSTRAINT_ERROR RAISED - P1 (D)"); |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - P1 (D)"); |
END; |
|
END; -- (D) |
|
----------------------------------------------- |
|
RESULT; |
|
END C64103C; |
/c67002c.ada
0,0 → 1,548
-- C67002C.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. |
--* |
-- CHECK THAT ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED) |
-- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS. |
-- THIS TEST CHECKS FORMAL SUBPROGRAM PARAMETERS. |
-- SUBTESTS ARE: |
-- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=", |
-- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-", |
-- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS. |
-- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY, |
-- WITH ONE PARAMETER. |
|
-- CPP 6/26/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67002C IS |
|
FUNCTION TWO_PARAMS (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END TWO_PARAMS; |
|
FUNCTION ONE_PARAM (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT(0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END ONE_PARAM; |
|
BEGIN |
TEST ("C67002C", "USE OF OPERATOR SYMBOLS IN " & |
"(OVERLOADED) FUNCTION SPECIFICATIONS"); |
|
------------------------------------------------- |
|
DECLARE -- (A) |
|
PACKAGE EQU IS |
TYPE LP IS LIMITED PRIVATE; |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN; |
PRIVATE |
TYPE LP IS NEW INTEGER; |
END EQU; |
USE EQU; |
|
LP1, LP2 : LP; |
|
PACKAGE BODY EQU IS |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN LPA > LPB; |
END "="; |
BEGIN |
LP1 := LP (IDENT_INT (7)); |
LP2 := LP (IDENT_INT (8)); |
END EQU; |
|
GENERIC |
WITH FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (LP1 = LP2) OR NOT (LP2 = LP1) OR |
(LP1 = LP1) OR (LP2 /= LP1) THEN |
FAILED ("OVERLOADING OF ""="" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE EQUAL IS NEW PKG ("=" => EQU."="); |
|
BEGIN -- (A) |
NULL; |
END; -- (A) |
|
------------------------------------------------- |
|
DECLARE -- (B) |
|
GENERIC |
WITH FUNCTION "AND" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) AND 1) /= 'G' OR |
(5 AND 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("AND" => TWO_PARAMS); |
|
BEGIN -- (B) |
NULL; |
END; -- (B) |
|
------------------------------------------------- |
|
DECLARE -- (C) |
|
GENERIC |
WITH FUNCTION "OR" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) OR 1) /= 'G' OR |
(5 OR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("OR" => TWO_PARAMS); |
|
BEGIN -- (C) |
NULL; |
END; -- (C) |
|
------------------------------------------------- |
|
DECLARE -- (D) |
|
GENERIC |
WITH FUNCTION "XOR" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) XOR 1) /= 'G' OR |
(5 XOR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("XOR" => TWO_PARAMS); |
|
BEGIN -- (D) |
NULL; |
END; -- (D) |
|
------------------------------------------------- |
|
DECLARE -- (E) |
|
GENERIC |
WITH FUNCTION "<" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) < 1) /= 'G' OR |
(5 < 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("<" => TWO_PARAMS); |
|
BEGIN -- (E) |
NULL; |
END; -- (E) |
|
------------------------------------------------- |
|
DECLARE -- (F) |
|
GENERIC |
WITH FUNCTION "<=" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) <= 1) /= 'G' OR |
(5 <= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<="" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("<=" => TWO_PARAMS); |
|
BEGIN -- (F) |
NULL; |
END; -- (F) |
|
------------------------------------------------- |
|
DECLARE -- (G) |
|
GENERIC |
WITH FUNCTION ">" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) > 1) /= 'G' OR |
(5 > 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG (">" => TWO_PARAMS); |
|
BEGIN -- (G) |
NULL; |
END; -- (G) |
|
------------------------------------------------- |
|
DECLARE -- (H) |
|
GENERIC |
WITH FUNCTION ">=" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) >= 1) /= 'G' OR |
(5 >= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">="" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG (">=" => TWO_PARAMS); |
|
BEGIN -- (H) |
NULL; |
END; -- (H) |
|
------------------------------------------------- |
|
DECLARE -- (I) |
|
GENERIC |
WITH FUNCTION "&" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) & 1) /= 'G' OR |
(5 & 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""&"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("&" => TWO_PARAMS); |
|
BEGIN -- (I) |
NULL; |
END; -- (I) |
|
------------------------------------------------- |
|
DECLARE -- (J) |
|
GENERIC |
WITH FUNCTION "*" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) * 1) /= 'G' OR |
(5 * 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""*"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("*" => TWO_PARAMS); |
|
BEGIN -- (J) |
NULL; |
END; -- (J) |
|
------------------------------------------------- |
|
DECLARE -- (K) |
|
GENERIC |
WITH FUNCTION "/" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) / 1) /= 'G' OR |
(5 / 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""/"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("/" => TWO_PARAMS); |
|
BEGIN -- (K) |
NULL; |
END; -- (K) |
|
------------------------------------------------- |
|
DECLARE -- (L) |
|
GENERIC |
WITH FUNCTION "MOD" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) MOD 1) /= 'G' OR |
(5 MOD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("MOD" => TWO_PARAMS); |
|
BEGIN -- (L) |
NULL; |
END; -- (L) |
|
------------------------------------------------- |
|
DECLARE -- (M) |
|
GENERIC |
WITH FUNCTION "REM" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) REM 1) /= 'G' OR |
(5 REM 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("REM" => TWO_PARAMS); |
|
BEGIN -- (M) |
NULL; |
END; -- (M) |
|
------------------------------------------------- |
|
DECLARE -- (N) |
|
GENERIC |
WITH FUNCTION "**" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) ** 1) /= 'G' OR |
(5 ** 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""**"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("**" => TWO_PARAMS); |
|
BEGIN -- (N) |
NULL; |
END; -- (N) |
|
------------------------------------------------- |
|
DECLARE -- (O) |
|
GENERIC |
WITH FUNCTION "+" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) + 1) /= 'G' OR |
(5 + 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""+"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("+" => TWO_PARAMS); |
|
BEGIN -- (O) |
NULL; |
END; -- (O) |
|
------------------------------------------------- |
|
DECLARE -- (P) |
|
GENERIC |
WITH FUNCTION "-" (I1, I2 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (IDENT_INT (10) - 1) /= 'G' OR |
(5 - 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""-"" OPERATOR DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("-" => TWO_PARAMS); |
|
BEGIN -- (P) |
NULL; |
END; -- (P) |
|
------------------------------------------------- |
|
DECLARE -- (Q) |
|
GENERIC |
WITH FUNCTION "+" (I1 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (+ IDENT_INT(25) /= 'P') OR |
(+ (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""+"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("+" => ONE_PARAM); |
|
BEGIN -- (Q) |
NULL; |
END; -- (Q) |
|
------------------------------------------------- |
|
DECLARE -- (R) |
|
GENERIC |
WITH FUNCTION "-" (I1 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (- IDENT_INT(25) /= 'P') OR |
(- (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""-"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("-" => ONE_PARAM); |
|
BEGIN -- (R) |
NULL; |
END; -- (R) |
|
------------------------------------------------- |
|
DECLARE -- (S) |
|
GENERIC |
WITH FUNCTION "NOT" (I1 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (NOT IDENT_INT(25) /= 'P') OR |
(NOT (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""NOT"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("NOT" => ONE_PARAM); |
|
BEGIN -- (S) |
NULL; |
END; -- (S) |
|
------------------------------------------------- |
|
DECLARE -- (T) |
|
GENERIC |
WITH FUNCTION "ABS" (I1 : INTEGER) RETURN CHARACTER; |
PACKAGE PKG IS |
END PKG; |
|
PACKAGE BODY PKG IS |
BEGIN |
IF (ABS IDENT_INT(25) /= 'P') OR |
(ABS (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""ABS"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END PKG; |
|
PACKAGE PACK IS NEW PKG ("ABS" => ONE_PARAM); |
|
BEGIN -- (T) |
NULL; |
END; -- (T) |
|
------------------------------------------------- |
|
RESULT; |
END C67002C; |
|
/c66002d.ada
0,0 → 1,85
-- C66002D.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (D) THE BASE TYPE OF A PARAMETER IS DIFFERENT FROM THAT |
-- OF THE CORRESPONDING ONE. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
|
WITH REPORT; |
PROCEDURE C66002D IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002D", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- THE BASE TYPE OF ONE PARAMETER IS |
-- DIFFERENT FROM THAT OF THE CORRESPONDING |
-- ONE. |
|
DECLARE |
I, J, K : INTEGER := 0; |
B : BOOLEAN; |
S : STRING (1..2) := "12"; |
|
PROCEDURE P (I1 : INTEGER; BI : OUT BOOLEAN; |
I2 : IN OUT INTEGER) IS |
BEGIN |
S(1) := 'A'; |
BI := TRUE; -- THIS VALUE IS IRRELEVENT. |
END P; |
|
PROCEDURE P (I1 : INTEGER; BI : OUT INTEGER; |
I2 : IN OUT INTEGER) IS |
BEGIN |
S(2) := 'B'; |
BI := 0; -- THIS VALUE IS IRRELEVENT. |
END P; |
|
BEGIN |
P (I, B, K); |
P (I, J, K); |
|
IF S /= "AB" THEN |
FAILED ("PROCEDURES DIFFERING ONLY BY " & |
"THE BASE TYPE OF A PARAMETER " & |
"CAUSED CONFUSION"); |
END IF; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002D; |
/c64103d.ada
0,0 → 1,187
-- C64103D.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. |
--* |
-- CHECK THAT THE APPROPRIATE EXCEPTION IS RAISED FOR TYPE CONVERSIONS |
-- ON OUT ARRAY PARAMETERS. IN PARTICULAR: |
-- (A) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN THE ACTUAL |
-- COMPONENT'S CONSTRAINTS DIFFER FROM THE FORMAL COMPONENT'S |
-- CONSTRAINTS. |
-- (B) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO |
-- AN UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE |
-- OUTSIDE OF A FORMAL INDEX SUBTYPE. |
-- (C) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL FOR CONVERSION TO A |
-- CONSTRAINED ARRAY TYPE WHEN THE NUMBER OF COMPONENTS PER |
-- DIMENSION OF THE ACTUAL DIFFERS FROM THAT OF THE FORMAL. |
-- (D) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO AN |
-- UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE |
-- OUTSIDE OF THE BASE INDEX TYPE OF THE FORMAL. |
|
-- *** NOTE: This test has been modified since ACVC version 1.11 to -- 9X |
-- *** remove incompatibilities associated with the transition -- 9X |
-- *** to Ada 9X. -- 9X |
-- *** -- 9X |
|
-- CPP 07/19/84 |
-- EG 10/29/85 FIX NUMERIC_ERROR/CONSTRAINT_ERROR ACCORDING TO |
-- AI-00387. |
-- MRM 03/30/93 REMOVED NUMERIC_ERROR FOR 9X COMPATIBILITY |
-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X. |
|
WITH SYSTEM; |
WITH REPORT; USE REPORT; |
PROCEDURE C64103D IS |
|
BEGIN |
TEST ("C64103D", "CHECK THAT APPROPRIATE EXCEPTION IS RAISED ON " & |
"TYPE CONVERSIONS OF OUT ARRAY PARAMETERS"); |
|
----------------------------------------------- |
|
DECLARE -- (A) |
BEGIN -- (A) |
|
DECLARE |
TYPE SUBINT IS RANGE 0..8; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
A0 : ARRAY_TYPE (0..3) := (0..3 => TRUE); |
|
PROCEDURE P2 (X : OUT ARRAY_TYPE) IS |
BEGIN |
NULL; |
END P2; |
BEGIN |
P2 (ARRAY_TYPE (A0)); -- OK. |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED -P2 (A)"); |
END; |
|
END; -- (A) |
|
----------------------------------------------- |
|
DECLARE -- (B) |
|
TYPE SUBINT IS RANGE 0..8; |
TYPE ARRAY_TYPE IS ARRAY (SUBINT RANGE <>) OF BOOLEAN; |
TYPE AR1 IS ARRAY (INTEGER RANGE <>) OF BOOLEAN; |
A1 : AR1 (-1..7) := (-1..7 => TRUE); |
A2 : AR1 (1..9) := (1..9 => TRUE); |
|
PROCEDURE P1 (X : OUT ARRAY_TYPE) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (B)"); |
END P1; |
|
BEGIN -- (B) |
|
BEGIN |
COMMENT ("CALL TO P1 (B) ON A1"); |
P1 (ARRAY_TYPE (A1)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B)"); |
END; |
|
BEGIN |
COMMENT ("CALL TO P1 (B) ON A2"); |
P1 (ARRAY_TYPE (A2)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B)"); |
END; |
|
END; -- (B) |
|
----------------------------------------------- |
|
DECLARE -- (C) |
BEGIN -- (C) |
|
DECLARE |
TYPE INDEX1 IS RANGE 1..3; |
TYPE INDEX2 IS RANGE 1..4; |
TYPE AR_TYPE IS ARRAY (INDEX1, INDEX2) OF BOOLEAN; |
A0 : AR_TYPE := (1..3 => (1..4 => FALSE)); |
|
TYPE I1 IS RANGE 1..4; |
TYPE I2 IS RANGE 1..3; |
TYPE ARRAY_TYPE IS ARRAY (I1, I2) OF BOOLEAN; |
|
PROCEDURE P1 (X : OUT ARRAY_TYPE) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (C)"); |
END P1; |
BEGIN |
P1 (ARRAY_TYPE (A0)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (C)"); |
END; |
|
END; -- (C) |
|
----------------------------------------------- |
|
DECLARE -- (D) |
BEGIN -- (D) |
|
DECLARE |
TYPE SM_INT IS RANGE 0..2; |
TYPE LG_INT IS RANGE SYSTEM.MIN_INT..SYSTEM.MAX_INT; |
TYPE AR_SMALL IS ARRAY (SM_INT RANGE <>) OF BOOLEAN; |
TYPE AR_LARGE IS ARRAY (LG_INT RANGE <>) OF BOOLEAN; |
A0 : AR_LARGE (SYSTEM.MAX_INT - 2..SYSTEM.MAX_INT) := |
(SYSTEM.MAX_INT - 2..SYSTEM.MAX_INT => TRUE); |
|
PROCEDURE P1 (X : OUT AR_SMALL) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P1 (D)"); |
END P1; |
BEGIN |
IF LG_INT (SM_INT'BASE'LAST) < LG_INT'BASE'LAST THEN |
P1 (AR_SMALL (A0)); |
ELSE |
COMMENT ("NOT APPLICABLE -P1 (D)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COMMENT ("CONSTRAINT_ERROR RAISED - P1 (D)"); |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - P1 (D)"); |
END; |
|
END; -- (D) |
|
----------------------------------------------- |
|
RESULT; |
|
END C64103D; |
/c67002d.ada
0,0 → 1,354
-- C67002D.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. |
--* |
-- CHECK THAT ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED) |
-- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS. |
-- THIS TEST CHECKS GENERIC INSTANTIATIONS FOR THESE FUNCTIONS. |
-- SUBTESTS ARE: |
-- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=", |
-- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-", |
-- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS. |
-- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY, |
-- WITH ONE PARAMETER. |
|
-- CPP 6/25/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67002D IS |
|
GENERIC |
TYPE ELEMENT IS (<>); |
FUNCTION TWO_PARAMS (I1, I2 : ELEMENT) RETURN CHARACTER; |
FUNCTION TWO_PARAMS (I1, I2 : ELEMENT) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END TWO_PARAMS; |
|
GENERIC |
TYPE ELEMENT IS (<>); |
FUNCTION ONE_PARAM (I1 : ELEMENT) RETURN CHARACTER; |
FUNCTION ONE_PARAM (I1 : ELEMENT) RETURN CHARACTER IS |
BEGIN |
IF I1 < ELEMENT'VAL(IDENT_INT(0)) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END ONE_PARAM; |
|
BEGIN |
TEST ("C67002D", "USE OF OPERATOR SYMBOLS IN " & |
"(OVERLOADED) FUNCTION SPECIFICATIONS"); |
|
------------------------------------------------- |
|
DECLARE -- (A) |
GENERIC |
TYPE LP IS LIMITED PRIVATE; |
WITH FUNCTION ">" (L, R : LP) RETURN BOOLEAN IS <>; |
PACKAGE PKG IS |
LP1, LP2 : LP; |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN; |
END PKG; |
|
PACKAGE BODY PKG IS |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN LPA > LPB; |
END "="; |
END PKG; |
|
BEGIN -- (A) |
DECLARE |
PACKAGE PACK IS NEW PKG (LP => INTEGER); |
USE PACK; |
FUNCTION "=" (L, R : INTEGER) RETURN BOOLEAN |
RENAMES PACK."="; |
BEGIN |
LP1 := IDENT_INT(7); |
LP2 := IDENT_INT(8); |
IF (LP1 = LP2) OR NOT (LP2 = LP1) OR |
(LP1 = LP1) OR (LP2 /= LP1) THEN |
FAILED ("OVERLOADING OF ""="" OPERATOR DEFECTIVE"); |
END IF; |
END; |
END; -- (A) |
|
------------------------------------------------- |
|
DECLARE -- (B) |
FUNCTION "AND" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (B) |
IF (IDENT_INT (10) AND 1) /= 'G' OR |
(5 AND 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (B) |
|
------------------------------------------------- |
|
DECLARE -- (C) |
FUNCTION "OR" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (C) |
IF (IDENT_INT (10) OR 1) /= 'G' OR |
(5 OR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (C) |
|
------------------------------------------------- |
|
DECLARE -- (D) |
FUNCTION "XOR" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (D) |
IF (IDENT_INT (10) XOR 1) /= 'G' OR |
(5 XOR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (D) |
|
------------------------------------------------- |
|
DECLARE -- (E) |
FUNCTION "<" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (E) |
IF (IDENT_INT (10) < 1) /= 'G' OR |
(5 < 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (E) |
|
------------------------------------------------- |
|
DECLARE -- (F) |
FUNCTION "<=" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (F) |
IF (IDENT_INT (10) <= 1) /= 'G' OR |
(5 <= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (F) |
|
------------------------------------------------- |
|
DECLARE -- (G) |
FUNCTION ">" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (G) |
IF (IDENT_INT (10) > 1) /= 'G' OR |
(5 > 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (G) |
|
------------------------------------------------- |
|
DECLARE -- (H) |
FUNCTION ">=" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (H) |
IF (IDENT_INT (10) >= 1) /= 'G' OR |
(5 >= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (H) |
|
------------------------------------------------- |
|
DECLARE -- (I) |
FUNCTION "&" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (I) |
IF (IDENT_INT (10) & 1) /= 'G' OR |
(5 & 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""&"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (I) |
|
------------------------------------------------- |
|
DECLARE -- (J) |
FUNCTION "*" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (J) |
IF (IDENT_INT (10) * 1) /= 'G' OR |
(5 * 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""*"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (J) |
|
------------------------------------------------- |
|
DECLARE -- (K) |
FUNCTION "/" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (K) |
IF (IDENT_INT (10) / 1) /= 'G' OR |
(5 / 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""/"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (K) |
|
------------------------------------------------- |
|
DECLARE -- (L) |
FUNCTION "MOD" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (L) |
IF (IDENT_INT (10) MOD 1) /= 'G' OR |
(5 MOD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (L) |
|
------------------------------------------------- |
|
DECLARE -- (M) |
FUNCTION "REM" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (M) |
IF (IDENT_INT (10) REM 1) /= 'G' OR |
(5 REM 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (M) |
|
------------------------------------------------- |
|
DECLARE -- (N) |
FUNCTION "**" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (N) |
IF (IDENT_INT (10) ** 1) /= 'G' OR |
(5 ** 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""**"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (N) |
|
------------------------------------------------- |
|
DECLARE -- (O) |
FUNCTION "+" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (O) |
IF (IDENT_INT (10) + 1) /= 'G' OR |
(5 + 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""+"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (O) |
|
------------------------------------------------- |
|
DECLARE -- (P) |
FUNCTION "-" IS NEW TWO_PARAMS |
(ELEMENT => INTEGER); |
|
BEGIN -- (P) |
IF (IDENT_INT (10) - 1) /= 'G' OR |
(5 - 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""-"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (P) |
|
------------------------------------------------- |
|
DECLARE -- (Q) |
FUNCTION "+" IS NEW ONE_PARAM |
(ELEMENT => INTEGER); |
|
BEGIN -- (Q) |
IF (+ IDENT_INT(25) /= 'P') OR |
(+ (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""+"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (Q) |
|
------------------------------------------------- |
|
DECLARE -- (R) |
FUNCTION "-" IS NEW ONE_PARAM |
(ELEMENT => INTEGER); |
|
BEGIN -- (R) |
IF (- IDENT_INT(25) /= 'P') OR |
(- (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""-"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (R) |
|
------------------------------------------------- |
|
DECLARE -- (S) |
FUNCTION "NOT" IS NEW ONE_PARAM |
(ELEMENT => INTEGER); |
|
BEGIN -- (S) |
IF (NOT IDENT_INT(25) /= 'P') OR |
(NOT (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""NOT"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (S) |
|
------------------------------------------------- |
|
DECLARE -- (T) |
FUNCTION "ABS" IS NEW ONE_PARAM |
(ELEMENT => INTEGER); |
|
BEGIN -- (T) |
IF (ABS IDENT_INT(25) /= 'P') OR |
(ABS (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""ABS"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (T) |
|
------------------------------------------------- |
|
RESULT; |
END C67002D; |
/c66002e.ada
0,0 → 1,91
-- C66002E.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (E) ONE SUBPROGRAM IS DECLARED IN AN OUTER DECLARATIVE |
-- PART, THE OTHER IN AN INNER PART, AND THE PARAMETERS ARE |
-- ORDERED DIFFERENTLY. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
|
WITH REPORT; |
PROCEDURE C66002E IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002E", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- ONE SUBPROGRAM IS DECLARED IN AN OUTER |
-- DECLARATIVE PART, THE OTHER IN AN INNER |
-- PART, AND THE PARAMETERS ARE ORDERED |
-- DIFFERENTLY. |
|
DECLARE |
S : STRING (1..2) := "12"; |
|
PROCEDURE P (I1 : INTEGER; I2 : IN OUT INTEGER; |
B1 : BOOLEAN) IS |
BEGIN |
S(1) := 'A'; |
END P; |
|
BEGIN |
DECLARE |
I : INTEGER := 0; |
|
PROCEDURE P (B1 : BOOLEAN; I1 : INTEGER; |
I2 : IN OUT INTEGER) IS |
BEGIN |
S(2) := 'B'; |
END P; |
|
BEGIN |
P (5, I, TRUE); |
P (TRUE, 5, I); |
-- NOTE THAT A CALL IN WHICH ALL ACTUAL PARAMETERS |
-- ARE NAMED_ASSOCIATIONS IS AMBIGUOUS. |
|
IF S /= "AB" THEN |
FAILED ("PROCEDURES IN " & |
"ENCLOSING-ENCLOSED SCOPES " & |
"DIFFERING ONLY IN PARAMETER " & |
"TYPE ORDER CAUSED CONFUSION"); |
END IF; |
END; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002E; |
/c64103e.ada
0,0 → 1,219
-- C64103E.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, FOR IN-OUT PARAMETERS OF AN ACCESS TYPE, |
-- CONSTRAINT_ERROR IS RAISED: |
-- BEFORE A SUBPROGRAM CALL WHEN THE BOUNDS OR DISCRIMINANTS |
-- OF THE ACTUAL DESIGNATED PARAMETER ARE DIFFERENT FROM |
-- THOSE OF THE FORMAL DESIGNATED PARAMETER; |
-- AFTER A SUBPROGRAM CALL WHEN THE BOUNDS OR DISCRIMINANTS |
-- OF THE FORMAL DESIGNATED PARAMETER ARE DIFFERENT FROM |
-- THOSE OF THE ACTUAL DESIGNATED PARAMETER. |
|
-- HISTORY: |
-- CPP 07/23/84 CREATED ORIGINAL TEST. |
-- VCL 10/27/87 MODIFIED THIS HEADER; ADDED STATEMENTS WHICH |
-- REFERENCED THE ACTUAL PARAMETERS IN THE SECOND |
-- SUBTEST. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64103E IS |
BEGIN |
TEST ("C64103E", "FOR IN-OUT PARAMETERS OF AN ACCESS TYPE, " & |
"CONSTRAINT_ERROR IS RAISED: BEFORE A " & |
"SUBPROGRAM CALL WHEN THE BOUNDS OR " & |
"DISCRIMINANTS OF THE ACTUAL DESIGNATED " & |
"PARAMETER ARE DIFFERENT FROM THOSE OF THE " & |
"FORMAL DESIGNATED PARAMETER; AFTER A " & |
"SUBPROGRAM CALL WHEN THE BOUNDS OR " & |
"DISCRIMINANTS OF THE FORMAL DESIGNATED " & |
"PARAMETER ARE DIFFERENT FROM THOSE OF THE " & |
"ACTUAL DESIGNATED PARAMETER"); |
|
|
BEGIN |
DECLARE |
TYPE AST IS ACCESS STRING; |
SUBTYPE AST_3 IS AST(1..3); |
SUBTYPE AST_5 IS AST(3..5); |
X_3 : AST_3 := NEW STRING(1..IDENT_INT(3)); |
|
PROCEDURE P1 (X : IN OUT AST_5) IS |
BEGIN |
FAILED("EXCEPTION NOT RAISED BEFORE CALL -P1 (A)"); |
END P1; |
BEGIN |
P1 (AST_5 (X_3)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (A)"); |
END; |
|
DECLARE |
TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN; |
TYPE A_ARRAY IS ACCESS ARRAY_TYPE; |
SUBTYPE A1_ARRAY IS A_ARRAY (1..IDENT_INT(3)); |
TYPE A2_ARRAY IS NEW A_ARRAY (2..4); |
A0 : A1_ARRAY := NEW ARRAY_TYPE (1..3); |
|
PROCEDURE P2 (X : IN OUT A2_ARRAY) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL -P2 (A)"); |
END P2; |
BEGIN |
P2 (A2_ARRAY (A0)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (A)"); |
END; |
|
DECLARE |
TYPE SUBINT IS RANGE 0..8; |
TYPE REC1 (DISC : SUBINT := 8) IS |
RECORD |
FIELD : SUBINT := DISC; |
END RECORD; |
TYPE A1_REC IS ACCESS REC1; |
TYPE A2_REC IS NEW A1_REC(3); |
A0 : A1_REC := NEW REC1(4); |
|
PROCEDURE P3 (X : IN OUT A2_REC) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL " & |
"-P3 (A)"); |
END P3; |
|
BEGIN |
P3 (A2_REC (A0)); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (A)"); |
END; |
|
END; |
|
|
BEGIN |
DECLARE |
TYPE AST IS ACCESS STRING; |
SUBTYPE AST_3 IS AST(IDENT_INT(1)..IDENT_INT(3)); |
X_3 : AST_3 := NEW STRING'(1..IDENT_INT(3) => 'A'); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P1 (X : IN OUT AST) IS |
BEGIN |
CALLED := TRUE; |
X := NEW STRING'(3..5 => 'C'); |
END P1; |
BEGIN |
P1 (AST (X_3)); |
IF X_3.ALL = STRING'(1 .. 3 => 'A') THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL" & |
"-P1 (B)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (B)"); |
END; |
|
DECLARE |
TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN; |
TYPE A_ARRAY IS ACCESS ARRAY_TYPE; |
SUBTYPE A1_ARRAY IS A_ARRAY (1..IDENT_INT(3)); |
A0 : A1_ARRAY := NEW ARRAY_TYPE'(1..3 => TRUE); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P2 (X : IN OUT A_ARRAY) IS |
BEGIN |
CALLED := TRUE; |
X := NEW ARRAY_TYPE'(2..4 => FALSE); |
END P2; |
BEGIN |
P2 (A_ARRAY (A0)); |
IF A0.ALL = ARRAY_TYPE'(1 .. 3 => TRUE) THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL" & |
"-P1 (B)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (B)"); |
END; |
|
DECLARE |
TYPE SUBINT IS RANGE 0..8; |
TYPE REC1 (DISC : SUBINT := 8) IS |
RECORD |
FIELD : SUBINT := DISC; |
END RECORD; |
TYPE A1_REC IS ACCESS REC1; |
TYPE A2_REC IS NEW A1_REC; |
A0 : A1_REC(4) := NEW REC1(4); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P3 (X : IN OUT A2_REC) IS |
BEGIN |
CALLED := TRUE; |
X := NEW REC1; |
END P3; |
|
BEGIN |
P3 (A2_REC (A0)); |
IF A0.ALL = REC1'(4,4) THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P3 (B1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P3 (B2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL" & |
"-P1 (B)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (B)"); |
END; |
|
END; |
|
RESULT; |
END C64103E; |
/c64107a.ada
0,0 → 1,73
-- C64107A.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. |
--* |
-- CHECK THAT ACTUAL PARAMETERS ARE EVALUATED AND IDENTIFIED AT THE |
-- TIME OF CALL. |
|
-- DAS 1/29/81 |
-- SPS 12/13/82 |
|
WITH REPORT; |
PROCEDURE C64107A IS |
|
USE REPORT; |
|
TYPE VECTOR IS ARRAY (1..10) OF INTEGER; |
TYPE PTRINT IS ACCESS INTEGER; |
|
I : INTEGER := 1; |
A : VECTOR := (1,2,3,4,5,6,7,8,9,10); |
P1 : PTRINT := NEW INTEGER'(2); |
P2 : PTRINT := P1; |
|
PROCEDURE PROC1 (I : OUT INTEGER; J : OUT INTEGER) IS |
BEGIN |
I := 10; |
J := -1; |
END PROC1; |
|
PROCEDURE PROC2 (P : OUT PTRINT; I : OUT INTEGER) IS |
BEGIN |
P := NEW INTEGER'(3); |
I := 5; |
END PROC2; |
|
BEGIN |
|
TEST ("C64107A", "CHECK THAT ACTUAL PARAMETERS ARE EVALUATED" & |
" AND IDENTIFIED AT THE TIME OF CALL"); |
|
PROC1 (I, A(I)); |
IF (A /= (-1,2,3,4,5,6,7,8,9,10)) THEN |
FAILED ("A(I) EVALUATED UPON RETURN"); |
END IF; |
|
PROC2 (P1, P1.ALL); |
IF (P2.ALL /= 5) THEN |
FAILED ("P1.ALL EVALUATED UPON RETURN"); |
END IF; |
|
RESULT; |
|
END C64107A; |
/c67002e.ada
0,0 → 1,348
-- C67002E.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. |
--* |
-- CHECK THAT ALL OPERATOR SYMBOLS CAN BE USED IN (OVERLOADED) |
-- FUNCTION SPECIFICATIONS WITH THE REQUIRED NUMBER OF PARAMETERS. |
-- THIS TEST CHECKS RENAMING DECLARATIONS FOR THESE FUNCTIONS. |
-- SUBTESTS ARE: |
-- (A) THROUGH (P): "=", "AND", "OR", "XOR", "<", "<=", |
-- ">", ">=", "&", "*", "/", "MOD", "REM", "**", "+", "-", |
-- RESPECTIVELY. ALL OF THESE HAVE TWO PARAMETERS. |
-- (Q), (R), (S), AND (T): "+", "-", "NOT", "ABS", RESPECTIVELY, |
-- WITH ONE PARAMETER. |
|
-- CPP 6/26/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C67002E IS |
|
FUNCTION TWO_PARAMS (I1, I2 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 > I2 THEN |
RETURN 'G'; |
ELSE RETURN 'L'; |
END IF; |
END TWO_PARAMS; |
|
FUNCTION ONE_PARAM (I1 : INTEGER) RETURN CHARACTER IS |
BEGIN |
IF I1 < IDENT_INT(0) THEN |
RETURN 'N'; |
ELSE RETURN 'P'; |
END IF; |
END ONE_PARAM; |
|
BEGIN |
TEST ("C67002E", "USE OF OPERATOR SYMBOLS IN " & |
"(OVERLOADED) FUNCTION SPECIFICATIONS"); |
|
------------------------------------------------- |
|
DECLARE -- (A) |
|
PACKAGE PKG IS |
TYPE LP IS LIMITED PRIVATE; |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN; |
PRIVATE |
TYPE LP IS NEW INTEGER; |
END PKG; |
USE PKG; |
|
LP1, LP2 : LP; |
|
FUNCTION "=" (LPA, LPB : LP) |
RETURN BOOLEAN RENAMES PKG."="; |
|
PACKAGE BODY PKG IS |
FUNCTION "=" (LPA, LPB : LP) RETURN BOOLEAN IS |
BEGIN |
RETURN LPA > LPB; |
END "="; |
BEGIN |
LP1 := LP (IDENT_INT (7)); |
LP2 := LP (IDENT_INT (8)); |
END PKG; |
|
BEGIN -- (A) |
IF (LP1 = LP2) OR NOT (LP2 = LP1) OR |
(LP1 = LP1) OR (LP2 /= LP1) THEN |
FAILED ("OVERLOADING OF ""="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (A) |
|
------------------------------------------------- |
|
DECLARE -- (B) |
FUNCTION "AND" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (B) |
IF (IDENT_INT (10) AND 1) /= 'G' OR |
(5 AND 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""AND"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (B) |
|
------------------------------------------------- |
|
DECLARE -- (C) |
FUNCTION "OR" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (C) |
IF (IDENT_INT (10) OR 1) /= 'G' OR |
(5 OR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""OR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (C) |
|
------------------------------------------------- |
|
DECLARE -- (D) |
FUNCTION "XOR" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (D) |
IF (IDENT_INT (10) XOR 1) /= 'G' OR |
(5 XOR 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""XOR"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (D) |
|
------------------------------------------------- |
|
DECLARE -- (E) |
FUNCTION "<" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (E) |
IF (IDENT_INT (10) < 1) /= 'G' OR |
(5 < 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (E) |
|
------------------------------------------------- |
|
DECLARE -- (F) |
FUNCTION "<=" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (F) |
IF (IDENT_INT (10) <= 1) /= 'G' OR |
(5 <= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""<="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (F) |
|
------------------------------------------------- |
|
DECLARE -- (G) |
FUNCTION ">" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (G) |
IF (IDENT_INT (10) > 1) /= 'G' OR |
(5 > 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (G) |
|
------------------------------------------------- |
|
DECLARE -- (H) |
FUNCTION ">=" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (H) |
IF (IDENT_INT (10) >= 1) /= 'G' OR |
(5 >= 10) /= 'L' THEN |
FAILED ("OVERLOADING OF "">="" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (H) |
|
------------------------------------------------- |
|
DECLARE -- (I) |
FUNCTION "&" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (I) |
IF (IDENT_INT (10) & 1) /= 'G' OR |
(5 & 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""&"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (I) |
|
------------------------------------------------- |
|
DECLARE -- (J) |
FUNCTION "*" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (J) |
IF (IDENT_INT (10) * 1) /= 'G' OR |
(5 * 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""*"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (J) |
|
------------------------------------------------- |
|
DECLARE -- (K) |
FUNCTION "/" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (K) |
IF (IDENT_INT (10) / 1) /= 'G' OR |
(5 / 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""/"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (K) |
|
------------------------------------------------- |
|
DECLARE -- (L) |
FUNCTION "MOD" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (L) |
IF (IDENT_INT (10) MOD 1) /= 'G' OR |
(5 MOD 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""MOD"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (L) |
|
------------------------------------------------- |
|
DECLARE -- (M) |
FUNCTION "REM" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (M) |
IF (IDENT_INT (10) REM 1) /= 'G' OR |
(5 REM 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""REM"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (M) |
|
------------------------------------------------- |
|
DECLARE -- (N) |
FUNCTION "**" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (N) |
IF (IDENT_INT (10) ** 1) /= 'G' OR |
(5 ** 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""**"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (N) |
|
------------------------------------------------- |
|
DECLARE -- (O) |
FUNCTION "+" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (O) |
IF (IDENT_INT (10) + 1) /= 'G' OR |
(5 + 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""+"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (O) |
|
------------------------------------------------- |
|
DECLARE -- (P) |
FUNCTION "-" (I1, I2 : INTEGER) |
RETURN CHARACTER RENAMES TWO_PARAMS; |
|
BEGIN -- (P) |
IF (IDENT_INT (10) - 1) /= 'G' OR |
(5 - 10) /= 'L' THEN |
FAILED ("OVERLOADING OF ""-"" OPERATOR DEFECTIVE"); |
END IF; |
END; -- (P) |
|
------------------------------------------------- |
|
DECLARE -- (Q) |
FUNCTION "+" (I1 : INTEGER) |
RETURN CHARACTER RENAMES ONE_PARAM; |
|
BEGIN -- (Q) |
IF (+ IDENT_INT(25) /= 'P') OR |
(+ (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""+"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (Q) |
|
------------------------------------------------- |
|
DECLARE -- (R) |
FUNCTION "-" (I1 : INTEGER) |
RETURN CHARACTER RENAMES ONE_PARAM; |
|
BEGIN -- (R) |
IF (- IDENT_INT(25) /= 'P') OR |
(- (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""-"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (R) |
|
------------------------------------------------- |
|
DECLARE -- (S) |
FUNCTION "NOT" (I1 : INTEGER) |
RETURN CHARACTER RENAMES ONE_PARAM; |
|
BEGIN -- (S) |
IF (NOT IDENT_INT(25) /= 'P') OR |
(NOT (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""NOT"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (S) |
|
------------------------------------------------- |
|
DECLARE -- (T) |
FUNCTION "ABS" (I1 : INTEGER) |
RETURN CHARACTER RENAMES ONE_PARAM; |
|
BEGIN -- (T) |
IF (ABS IDENT_INT(25) /= 'P') OR |
(ABS (0-25) /= 'N') THEN |
FAILED ("OVERLOADING OF ""ABS"" " & |
"OPERATOR (ONE OPERAND) DEFECTIVE"); |
END IF; |
END; -- (T) |
|
------------------------------------------------- |
|
RESULT; |
END C67002E; |
/c66002f.ada
0,0 → 1,92
-- C66002F.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (F) ONE SUBPROGRAM IS DECLARED IN AN OUTER DECLARATIVE PART, |
-- THE OTHER IN AN INNER PART, AND ONE HAS ONE MORE PARAMETER |
-- THAN THE OTHER; THE OMITTED PARAMETER HAS A DEFAULT VALUE. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
|
WITH REPORT; |
PROCEDURE C66002F IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002F", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- ONE SUBPROGRAM IS IN AN OUTER DECLARATIVE |
-- PART, THE OTHER IN AN INNER PART, AND ONE |
-- HAS ONE MORE PARAMETER (WITH A DEFAULT |
-- VALUE) THAN THE OTHER. |
|
BF : |
DECLARE |
S : STRING (1..3) := "123"; |
|
PROCEDURE P (I1, I2, I3 : INTEGER := 1) IS |
C : CONSTANT STRING := "CXA"; |
BEGIN |
S(I3) := C(I3); |
END P; |
|
PROCEDURE ENCLOSE IS |
|
PROCEDURE P (I1, I2 : INTEGER := 1) IS |
BEGIN |
S(2) := 'B'; |
END P; |
|
BEGIN -- ENCLOSE |
P (1, 2, 3); |
ENCLOSE.P (1, 2); -- NOTE THAT THESE CALLS |
BF.P (1, 2); -- MUST BE DISAMBIGUATED. |
|
IF S /= "CBA" THEN |
FAILED ("PROCEDURES IN ENCLOSING-" & |
"ENCLOSED SCOPES DIFFERING " & |
"ONLY IN EXISTENCE OF ONE " & |
"DEFAULT-VALUED PARAMETER CAUSED " & |
"CONFUSION"); |
END IF; |
END ENCLOSE; |
|
BEGIN |
ENCLOSE; |
END BF; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002F; |
/c64103f.ada
0,0 → 1,144
-- C64103F.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, FOR OUT PARAMETERS OF AN ACCESS TYPE, |
-- CONSTRAINT_ERROR IS RAISED: |
-- AFTER A SUBPROGRAM CALL WHEN THE BOUNDS OR DISCRIMINANTS |
-- OF THE FORMAL DESIGNATED PARAMETER ARE DIFFERENT FROM |
-- THOSE OF THE ACTUAL DESIGNATED PARAMETER. |
|
-- HISTORY: |
-- CPP 07/23/84 CREATED ORIGINAL TEST. |
-- VCL 10/27/87 MODIFIED THIS HEADER; ADDED STATEMENTS WHICH |
-- REFERENCE THE ACTUAL PARAMETERS. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64103F IS |
BEGIN |
TEST ("C64103F", "FOR OUT PARAMETERS OF AN ACCESS TYPE, " & |
"CONSTRAINT_ERROR IS RAISED: AFTER A " & |
"SUBPROGRAM CALL WHEN THE BOUNDS OR " & |
"DISCRIMINANTS OF THE FORMAL DESIGNATED " & |
"PARAMETER ARE DIFFERENT FROM THOSE OF THE " & |
"ACTUAL DESIGNATED PARAMETER"); |
|
|
BEGIN |
DECLARE |
TYPE AST IS ACCESS STRING; |
SUBTYPE AST_3 IS AST(IDENT_INT(1)..IDENT_INT(3)); |
SUBTYPE AST_5 IS AST(3..5); |
X_3 : AST_3 := NEW STRING'(1..IDENT_INT(3) => 'A'); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P1 (X : OUT AST_5) IS |
BEGIN |
CALLED := TRUE; |
X := NEW STRING'(3..5 => 'C'); |
END P1; |
BEGIN |
P1 (AST_5 (X_3)); |
IF X_3.ALL = STRING'(1 .. 3 => 'A') THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (A1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P1 (A2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P1 (A)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P1 (A)"); |
END; |
|
DECLARE |
TYPE ARRAY_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN; |
TYPE A_ARRAY IS ACCESS ARRAY_TYPE; |
SUBTYPE A1_ARRAY IS A_ARRAY (1..IDENT_INT(3)); |
TYPE A2_ARRAY IS NEW A_ARRAY (2..4); |
A0 : A1_ARRAY := NEW ARRAY_TYPE'(1..3 => TRUE); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P2 (X : OUT A2_ARRAY) IS |
BEGIN |
CALLED := TRUE; |
X := NEW ARRAY_TYPE'(2..4 => FALSE); |
END P2; |
BEGIN |
P2 (A2_ARRAY (A0)); |
IF A0.ALL = ARRAY_TYPE'(1 .. 3 => TRUE) THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (A1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P2 (A2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P1 (A)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P2 (A)"); |
END; |
|
DECLARE |
TYPE SUBINT IS RANGE 0..8; |
TYPE REC1 (DISC : SUBINT := 8) IS |
RECORD |
FIELD : SUBINT := DISC; |
END RECORD; |
TYPE A1_REC IS ACCESS REC1; |
TYPE A2_REC IS NEW A1_REC (3); |
A0 : A1_REC(4) := NEW REC1(4); |
CALLED : BOOLEAN := FALSE; |
|
PROCEDURE P3 (X : OUT A2_REC) IS |
BEGIN |
CALLED := TRUE; |
X := NEW REC1(3); |
END P3; |
|
BEGIN |
P3 (A2_REC (A0)); |
IF A0.ALL = REC1'(4,4) THEN |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P3 (A1)"); |
ELSE |
FAILED ("EXCEPTION NOT RAISED AFTER CALL -P3 (A2)"); |
END IF; |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("EXCEPTION RAISED BEFORE CALL " & |
"-P1 (A)"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED -P3 (A)"); |
END; |
END; |
|
RESULT; |
END C64103F; |
/c64005da.ada
0,0 → 1,65
-- C64005DA.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. |
--* |
-- JRK 7/30/84 |
|
SEPARATE (C64005D0M) |
|
PROCEDURE C64005DA (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
PROCEDURE C64005DB (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
SEPARATE; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_A); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005D0M.V & C64005DA.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005DB (LEVEL'SUCC(L), IDENT_CHAR('1'), T); |
|
WHEN '2' => |
C64005DA (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
C64005DB (LEVEL'SUCC(L), IDENT_CHAR('2'), T); |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005DA.L & C64005DA.C & C64005D0M.L; |
T.E := T.E + N; |
|
END C64005DA; |
/c66002g.ada
0,0 → 1,82
-- C66002G.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. |
--* |
-- CHECK THAT OVERLOADED SUBPROGRAM DECLARATIONS |
-- ARE PERMITTED IN WHICH THERE IS A MINIMAL |
-- DIFFERENCE BETWEEN THE DECLARATIONS. |
|
-- (G) THE RESULT TYPE OF TWO FUNCTION DECLARATIONS IS DIFFERENT. |
|
-- CVP 5/4/81 |
-- JRK 5/8/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C66002G IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C66002G", "SUBPROGRAM OVERLOADING WITH " & |
"MINIMAL DIFFERENCES ALLOWED"); |
|
-------------------------------------------------- |
|
-- THE RESULT TYPES OF TWO FUNCTION |
-- DECLARATIONS ARE DIFFERENT. |
|
DECLARE |
I : INTEGER; |
B : BOOLEAN; |
S : STRING (1..2) := "12"; |
|
FUNCTION F RETURN INTEGER IS |
BEGIN |
S(1) := 'A'; |
RETURN IDENT_INT (0); -- THIS VALUE IS IRRELEVENT. |
END F; |
|
FUNCTION F RETURN BOOLEAN IS |
BEGIN |
S(2) := 'B'; |
RETURN IDENT_BOOL (TRUE); -- THIS VALUE IS IRRELEVANT. |
END F; |
|
BEGIN |
I := F; |
B := F; |
|
IF S /= "AB" THEN |
FAILED ("FUNCTIONS DIFFERING ONLY IN " & |
"BASE TYPE OF RETURNED VALUE " & |
"CAUSED CONFUSION"); |
END IF; |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C66002G; |
/c64005db.ada
0,0 → 1,67
-- C64005DB.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. |
--* |
-- JRK 7/30/84 |
|
SEPARATE (C64005D0M.C64005DA) |
|
PROCEDURE C64005DB (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
PROCEDURE C64005DC (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
SEPARATE; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_B); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005D0M.V & C64005DA.V & C64005DB.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005DC (LEVEL'SUCC(L), IDENT_CHAR('1'), T); |
|
WHEN '2' => |
C64005DB (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
C64005DC (LEVEL'SUCC(L), IDENT_CHAR('2'), T); |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005DB.L & C64005DB.C & |
C64005DA.L & C64005DA.C & |
C64005D0M.L; |
T.E := T.E + N; |
|
END C64005DB; |
/c640001.a
0,0 → 1,334
-- C640001.A |
-- |
-- 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 the prefix of a subprogram call with an actual parameter |
-- part may be an implicit dereference of an access-to-subprogram value. |
-- Check that, for an access-to-subprogram type whose designated profile |
-- contains parameters of a tagged generic formal type, an access-to- |
-- subprogram value may designate dispatching and non-dispatching |
-- operations, and that dereferences of such a value call the appropriate |
-- subprogram. |
-- |
-- TEST DESCRIPTION: |
-- The test declares a tagged type (Table) with a dispatching operation |
-- (Clear), as well as a derivative (Table2) which overrides that |
-- operation. A subprogram with the same name and profile as Clear is |
-- declared in a separate package -- it is therefore not a dispatching |
-- operation of Table. For the purposes of the test, each version of Clear |
-- modifies the components of its parameter in a unique way. |
-- |
-- Additionally, an operation (Reset) of type Table is declared which |
-- makes a re-dispatching call to Clear, i.e., |
-- |
-- procedure Reset (A: in out Table) is |
-- begin |
-- ... |
-- Clear (Table'Class(A)); -- Re-dispatch based on tag of actual. |
-- ... |
-- end Reset; |
-- |
-- An access-to-subprogram type is declared within a generic package, |
-- with a designated profile which declares a parameter of a generic |
-- formal tagged private type. |
-- |
-- The generic is instantiated with type Table. The instance defines an |
-- array of access-to-subprogram values (which represents a table of |
-- operations to be performed sequentially on a single operand). |
-- Access values designating the dispatching version of Clear, the |
-- non-dispatching version of Clear, and Reset (which re-dispatches to |
-- Clear) are placed in this array. |
-- |
-- In the instance, each subprogram in the array is called by implicitly |
-- dereferencing the corresponding access value. For the dispatching and |
-- non-dispatching versions of Clear, the actual parameter passed is of |
-- type Table. For Reset, the actual parameter passed is a view conversion |
-- of an object of type Table2 to type Table, i.e., Table(Table2_Obj). |
-- Since the tag of the operand never changes, the call to Clear within |
-- Reset should execute Table2's version of Clear. |
-- |
-- The main program verifies that the appropriate version of Clear is |
-- called in each case, by checking that the components of the actual are |
-- updated as expected. |
-- |
-- |
-- CHANGE HISTORY: |
-- 06 Dec 94 SAIC ACVC 2.0 |
-- |
--! |
|
package C640001_0 is |
|
-- Data type artificial for testing purposes. |
|
Row_Len : constant := 10; |
|
T : constant Boolean := True; |
F : constant Boolean := False; |
|
type Row_Type is array (1 .. Row_Len) of Boolean; |
|
function Is_True (A : in Row_Type) return Boolean; |
function Is_False (A : in Row_Type) return Boolean; |
|
|
Init : constant Row_Type := (T, F, T, F, T, F, T, F, T, F); |
|
type Table is tagged record -- Tagged type. |
Row1 : Row_Type := Init; |
Row2 : Row_Type := Init; |
end record; |
|
procedure Clear (A : in out Table); -- Dispatching operation. |
|
procedure Reset (A : in out Table); -- Re-dispatching operation. |
|
-- ...Other operations. |
|
|
type Table2 is new Table with null record; -- Extension of Table (but |
-- structurally identical). |
|
procedure Clear (A : in out Table2); -- Overrides parent's op. |
|
-- ...Other operations. |
|
|
end C640001_0; |
|
|
--===================================================================-- |
|
|
package body C640001_0 is |
|
function Is_True (A : in Row_Type) return Boolean is |
begin |
for I in A'Range loop |
if A(I) /= True then -- Return true if all elements |
return False; -- of A are True. |
end if; |
end loop; |
return True; |
end Is_True; |
|
|
function Is_False (A : in Row_Type) return Boolean is |
begin |
return A = Row_Type'(others => False); -- Return true if all elements |
end Is_False; -- of A are False. |
|
|
procedure Clear (A : in out Table) is |
begin |
for I in Row_Type'Range loop -- This version of Clear sets |
A.Row1(I) := False; -- the elements of Row1 only |
end loop; -- to False. |
end Clear; |
|
|
procedure Reset (A : in out Table) is |
begin |
Clear (Table'Class(A)); -- Redispatch to appropriate |
-- ... Other "reset" activities. -- version of Clear. |
end Reset; |
|
|
procedure Clear (A : in out Table2) is |
begin |
for I in Row_Type'Range loop -- This version of Clear sets |
A.Row1(I) := True; -- the elements of Row1 only |
end loop; -- to True. |
end Clear; |
|
|
end C640001_0; |
|
|
--===================================================================-- |
|
|
with C640001_0; |
package C640001_1 is |
|
procedure Clear (T : in out C640001_0.Table); -- Non-dispatching operation. |
|
end C640001_1; |
|
|
--===================================================================-- |
|
|
package body C640001_1 is |
|
procedure Clear (T : in out C640001_0.Table) is |
begin |
for I in C640001_0.Row_Type'Range loop -- This version of Clear sets |
T.Row2(I) := True; -- the elements of Row2 only |
end loop; -- to True. |
end Clear; |
|
end C640001_1; |
|
|
--===================================================================-- |
|
|
-- This unit represents a support package for table-driven processing of |
-- data objects. Process_Operand performs a set of operations are performed |
-- sequentially on a single operand. Note that parameters are provided to |
-- specify which subset of operations in the operations table are to be |
-- performed (ordinarily these might be omitted, but the test requires that |
-- each operation be called individually for a single operand). |
|
generic |
type Tag is tagged private; |
package C640001_2 is |
|
type Proc_Ptr is access procedure (P: in out Tag); |
|
type Op_List is private; |
|
procedure Add_Op (Op : in Proc_Ptr; -- Add operation to |
List : in out Op_List); -- to list of ops. |
|
procedure Process_Operand (Operand : in out Tag; -- Execute a subset |
List : in Op_List; -- of a list of |
First_Op : in Positive; -- operations using |
Last_Op : in Positive); -- a given operand. |
|
-- ...Other operations. |
|
private |
type Op_Array is array (1 .. 3) of Proc_Ptr; |
|
type Op_List is record |
Top : Natural := 0; |
Ops : Op_Array; |
end record; |
end C640001_2; |
|
|
--===================================================================-- |
|
|
package body C640001_2 is |
|
procedure Add_Op (Op : in Proc_Ptr; |
List : in out Op_List) is |
begin |
List.Top := List.Top + 1; -- Artificial; no Constraint_Error protection. |
List.Ops(List.Top) := Op; |
end Add_Op; |
|
|
procedure Process_Operand (Operand : in out Tag; |
List : in Op_List; |
First_Op : in Positive; |
Last_Op : in Positive) is |
begin |
for I in First_Op .. Last_Op loop |
List.Ops(I)(Operand); -- Implicit dereference of an |
end loop; -- access-to-subprogram value. |
end Process_Operand; |
|
end C640001_2; |
|
|
--===================================================================-- |
|
|
with C640001_0; |
with C640001_1; |
with C640001_2; |
|
with Report; |
procedure C640001 is |
|
package Table_Support is new C640001_2 (C640001_0.Table); |
|
Sub_Ptr : Table_Support.Proc_Ptr; |
My_List : Table_Support.Op_List; |
My_Table1 : C640001_0.Table; -- Initial values of both Row1 & |
-- Row2 are (T,F,T,F,T,F,T,F,T,F). |
My_Table2 : C640001_0.Table2; -- Initial values of both Row1 & |
-- Row2 are (T,F,T,F,T,F,T,F,T,F). |
begin |
Report.Test ("C640001", "Check that, for an access-to-subprogram type " & |
"whose designated profile contains parameters " & |
"of a tagged generic formal type, an access-" & |
"to-subprogram value may designate dispatching " & |
"and non-dispatching operations"); |
|
-- |
-- Add subprogram access values to list: |
-- |
|
Sub_Ptr := C640001_0.Clear'Access; -- Designates dispatching op. |
Table_Support.Add_Op (Sub_Ptr, My_List); -- (1st operation on My_List). |
|
Sub_Ptr := C640001_1.Clear'Access; -- Designates non-dispatching op. |
Table_Support.Add_Op (Sub_Ptr, My_List); -- (2nd operation on My_List). |
|
Sub_Ptr := C640001_0.Reset'Access; -- Designates re-dispatching op. |
Table_Support.Add_Op (Sub_Ptr, My_List); -- (3rd operation on My_List). |
|
|
-- |
-- Call dispatching operation: |
-- |
|
Table_Support.Process_Operand (My_Table1, My_List, 1, 1); -- Call 1st op. |
|
if not C640001_0.Is_False (My_Table1.Row1) then |
Report.Failed ("Wrong result after calling dispatching operation"); |
end if; |
|
|
-- |
-- Call non-dispatching operation: |
-- |
|
Table_Support.Process_Operand (My_Table1, My_List, 2, 2); -- Call 2nd op. |
|
if not C640001_0.Is_True (My_Table1.Row2) then |
Report.Failed ("Wrong result after calling non-dispatching operation"); |
end if; |
|
|
-- |
-- Call re-dispatching operation: |
-- |
|
Table_Support.Process_Operand (C640001_0.Table(My_Table2), -- View conv. |
My_List, 3, 3); -- Call 3rd op. |
|
if not C640001_0.Is_True (My_Table2.Row1) then |
Report.Failed ("Wrong result after calling re-dispatching operation"); |
end if; |
|
|
Report.Result; |
end C640001; |
/c64005dc.ada
0,0 → 1,74
-- C64005DC.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. |
--* |
-- JRK 7/30/84 |
|
SEPARATE (C64005D0M.C64005DA.C64005DB) |
|
PROCEDURE C64005DC (L : LEVEL; C : CALL; T : IN OUT TRACE) IS |
|
V : STRING (1..2); |
|
M : CONSTANT NATURAL := LEVEL'POS (L) - |
LEVEL'POS (LEVEL'FIRST) + 1; |
N : CONSTANT NATURAL := 2 * M + 1; |
|
BEGIN |
|
V (1) := IDENT_CHAR (ASCII.LC_C); |
V (2) := C; |
|
-- APPEND ALL V TO T. |
T.S (T.E+1 .. T.E+N) := C64005D0M.V & C64005DA.V & C64005DB.V & |
C64005DC.V; |
T.E := T.E + N; |
|
CASE C IS |
|
WHEN '1' => |
C64005DA (IDENT_CHAR(LEVEL'FIRST), IDENT_CHAR('2'), T); |
|
WHEN '2' => |
C64005DC (L, IDENT_CHAR('3'), T); |
|
WHEN '3' => |
-- APPEND MID-POINT SYMBOL TO T. |
T.S (T.E+1) := IDENT_CHAR ('='); |
T.E := T.E + 1; |
|
-- G := CATENATE ALL V, L, C; |
G := C64005D0M.V & C64005D0M.L & |
C64005DA.V & C64005DA.L & C64005DA.C & |
C64005DB.V & C64005DB.L & C64005DB.C & |
C64005DC.V & C64005DC.L & C64005DC.C; |
END CASE; |
|
-- APPEND ALL L AND C TO T IN REVERSE ORDER. |
T.S (T.E+1 .. T.E+N) := C64005DC.L & C64005DC.C & |
C64005DB.L & C64005DB.C & |
C64005DA.L & C64005DA.C & |
C64005D0M.L; |
T.E := T.E + N; |
|
END C64005DC; |
/c62003a.ada
0,0 → 1,234
-- C62003A.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. |
--* |
-- CHECK THAT SCALAR AND ACCESS PARAMETERS ARE COPIED. |
-- SUBTESTS ARE: |
-- (A) SCALAR PARAMETERS TO PROCEDURES. |
-- (B) SCALAR PARAMETERS TO FUNCTIONS. |
-- (C) ACCESS PARAMETERS TO PROCEDURES. |
-- (D) ACCESS PARAMETERS TO FUNCTIONS. |
|
-- DAS 01/14/80 |
-- SPS 10/26/82 |
-- CPP 05/25/84 |
-- EG 10/29/85 ELIMINATE THE USE OF NUMERIC_ERROR IN TEST. |
|
WITH REPORT; |
PROCEDURE C62003A IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C62003A", "CHECK THAT SCALAR AND ACCESS PARAMETERS ARE " & |
"COPIED"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
|
I : INTEGER; |
E : EXCEPTION; |
|
PROCEDURE P (PI : IN INTEGER; PO : OUT INTEGER; |
PIO : IN OUT INTEGER) IS |
|
TMP : INTEGER; |
|
BEGIN |
|
TMP := PI; -- SAVE VALUE OF PI AT PROC ENTRY. |
|
PO := 10; |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO SCALAR OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TMP := PI; -- RESET TMP FOR NEXT CASE. |
END IF; |
|
PIO := PIO + 100; |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO SCALAR IN OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TMP := PI; -- RESET TMP FOR NEXT CASE. |
END IF; |
|
I := I + 1; |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO SCALAR ACTUAL " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
END IF; |
|
RAISE E; -- CHECK EXCEPTION HANDLING. |
END P; |
|
BEGIN -- (A) |
I := 0; -- INITIALIZE I SO VARIOUS CASES CAN BE DETECTED. |
P (I, I, I); |
FAILED ("EXCEPTION NOT RAISED - A"); |
EXCEPTION |
WHEN E => |
IF (I /= 1) THEN |
CASE I IS |
WHEN 11 => |
FAILED ("OUT ACTUAL SCALAR PARAMETER " & |
"CHANGED GLOBAL VALUE"); |
WHEN 101 => |
FAILED ("IN OUT ACTUAL SCALAR " & |
"PARAMETER CHANGED GLOBAL VALUE"); |
WHEN 111 => |
FAILED ("OUT AND IN OUT ACTUAL SCALAR " & |
"PARAMETERS CHANGED GLOBAL " & |
"VALUE"); |
WHEN OTHERS => |
FAILED ("UNDETERMINED CHANGE TO GLOBAL " & |
"VALUE"); |
END CASE; |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - A"); |
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
I,J : INTEGER; |
|
FUNCTION F (FI : IN INTEGER) RETURN INTEGER IS |
|
TMP : INTEGER := FI; |
|
BEGIN |
|
I := I + 1; |
IF (FI /= TMP) THEN |
FAILED ("ASSIGNMENT TO SCALAR ACTUAL FUNCTION " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
END IF; |
|
RETURN (100); |
END F; |
|
BEGIN -- (B) |
I := 100; |
J := F(I); |
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
TYPE ACCTYPE IS ACCESS INTEGER; |
|
I : ACCTYPE; |
E : EXCEPTION; |
|
PROCEDURE P (PI : IN ACCTYPE; PO : OUT ACCTYPE; |
PIO : IN OUT ACCTYPE) IS |
|
TMP : ACCTYPE; |
|
BEGIN |
|
TMP := PI; -- SAVE VALUE OF PI AT PROC ENTRY. |
|
I := NEW INTEGER'(101); |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO ACCESS ACTUAL " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TMP := PI; -- RESET TMP FOR NEXT CASE. |
END IF; |
|
PO := NEW INTEGER'(1); |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO ACCESS OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TMP := PI; -- RESET TMP FOR NEXT CASE. |
END IF; |
|
PIO := NEW INTEGER'(10); |
IF (PI /= TMP) THEN |
FAILED ("ASSIGNMENT TO ACCESS IN OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
END IF; |
|
RAISE E; -- CHECK EXCEPTION HANDLING. |
END P; |
|
BEGIN -- (C) |
I := NEW INTEGER'(100); |
P (I, I, I); |
FAILED ("EXCEPTION NOT RAISED - C"); |
EXCEPTION |
WHEN E => |
IF (I.ALL /= 101) THEN |
FAILED ("OUT OR IN OUT ACTUAL PROCEDURE " & |
"PARAMETER VALUE CHANGED DESPITE " & |
"RAISED EXCEPTION"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - C"); |
END; -- (C) |
|
-------------------------------------------------- |
|
DECLARE -- (D) |
|
TYPE ACCTYPE IS ACCESS INTEGER; |
|
I,J : ACCTYPE; |
|
FUNCTION F (FI : IN ACCTYPE) RETURN ACCTYPE IS |
|
TMP : ACCTYPE := FI; |
|
BEGIN |
|
I := NEW INTEGER; |
IF (FI /= TMP) THEN |
FAILED ("ASSIGNMENT TO ACCESS ACTUAL FUNCTION " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
END IF; |
|
RETURN (NULL); |
END F; |
|
BEGIN -- (D) |
I := NULL; |
J := F(I); |
END; -- (D) |
|
-------------------------------------------------- |
|
RESULT; |
|
END C62003A; |
/c62003b.ada
0,0 → 1,301
-- C62003B.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. |
--* |
-- CHECK THAT PRIVATE TYPES IMPLEMENTED AS SCALAR OR ACCESS TYPES ARE |
-- PASSED BY COPY. |
-- SUBTESTS ARE: |
-- (A) PRIVATE SCALAR PARAMETERS TO PROCEDURES. |
-- (B) PRIVATE SCALAR PARAMETERS TO FUNCTIONS. |
-- (C) PRIVATE ACCESS PARAMETERS TO PROCEDURES. |
-- (D) PRIVATE ACCESS PARAMETERS TO FUNCTIONS. |
|
-- CPP 05/25/84 |
-- EG 10/29/85 ELIMINATE THE USE OF NUMERIC_ERROR IN TEST. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C62003B IS |
|
BEGIN |
TEST("C62003B", "CHECK THAT PRIVATE SCALAR AND ACCESS " & |
"PARAMETERS ARE COPIED"); |
|
--------------------------------------------------- |
|
A_B: DECLARE |
|
PACKAGE SCALAR_PKG IS |
|
TYPE T IS PRIVATE; |
C0 : CONSTANT T; |
C1 : CONSTANT T; |
C10 : CONSTANT T; |
C100 : CONSTANT T; |
|
FUNCTION "+" (OLD : IN T; INCREMENT : IN T) RETURN T; |
FUNCTION CONVERT (OLD_PRIVATE : IN T) RETURN INTEGER; |
|
PRIVATE |
TYPE T IS NEW INTEGER; |
C0 : CONSTANT T := 0; |
C1 : CONSTANT T := 1; |
C10 : CONSTANT T := 10; |
C100 : CONSTANT T := 100; |
|
END SCALAR_PKG; |
|
|
PACKAGE BODY SCALAR_PKG IS |
|
FUNCTION "+" (OLD : IN T; INCREMENT : IN T) RETURN T IS |
BEGIN -- "+" |
RETURN T(INTEGER(OLD) + INTEGER(INCREMENT)); |
END "+"; |
|
FUNCTION CONVERT (OLD_PRIVATE : IN T) RETURN INTEGER IS |
BEGIN -- CONVERT |
RETURN INTEGER(OLD_PRIVATE); |
END CONVERT; |
|
END SCALAR_PKG; |
|
USE SCALAR_PKG; |
|
--------------------------------------------------- |
|
BEGIN -- A_B |
|
A : DECLARE |
|
I : T; |
E : EXCEPTION; |
|
PROCEDURE P (PI : IN T; PO : OUT T; PIO : IN OUT T) IS |
|
TEMP : T; |
|
BEGIN -- P |
|
TEMP := PI; -- SAVE VALUE OF PI AT PROC ENTRY. |
|
PO := C10; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (SCALAR) OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TEMP := PI; -- RESET TEMP FOR NEXT CASE. |
END IF; |
|
PIO := PIO + C100; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (SCALAR) IN " & |
"OUT PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TEMP := PI; -- RESET TEMP FOR NEXT CASE. |
END IF; |
|
I := I + C1; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (SCALAR) " & |
"ACTUAL PARAMETER CHANGES THE " & |
"VALUE OF INPUT PARAMETER"); |
END IF; |
|
RAISE E; -- CHECK EXCEPTION HANDLING. |
END P; |
|
BEGIN -- A |
I := C0; -- INITIALIZE I SO VARIOUS CASES CAN BE |
-- DETECTED. |
P (I, I, I); |
FAILED ("EXCEPTION NOT RAISED - A"); |
EXCEPTION |
WHEN E => |
IF (I /= C1) THEN |
CASE CONVERT(I) IS |
WHEN 11 => |
FAILED ("OUT ACTUAL PRIVATE " & |
"(SCALAR) PARAMETER " & |
"CHANGED GLOBAL VALUE"); |
WHEN 101 => |
FAILED ("IN OUT ACTUAL PRIVATE " & |
"(SCALAR) PARAMETER " & |
"CHANGED GLOBAL VALUE"); |
WHEN 111 => |
FAILED ("OUT AND IN OUT ACTUAL " & |
"PRIVATE (SCALAR) " & |
"PARAMETER CHANGED " & |
"GLOBAL VALUE"); |
WHEN OTHERS => |
FAILED ("UNDETERMINED CHANGE TO " & |
"GLOBAL VALUE"); |
END CASE; |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - A"); |
END A; |
|
--------------------------------------------------- |
|
B : DECLARE |
|
I, J : T; |
|
FUNCTION F (FI : IN T) RETURN T IS |
|
TEMP : T := FI; -- SAVE VALUE OF FI AT FN ENTRY. |
|
BEGIN -- F |
|
I := I + C1; |
IF (FI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (SCALAR) " & |
"ACTUAL FUNCTION PARAMETER CHANGES " & |
"THE VALUE OF INPUT PARAMETER "); |
END IF; |
|
RETURN C0; |
END F; |
|
BEGIN -- B |
I := C0; |
J := F(I); |
END B; |
|
END A_B; |
|
--------------------------------------------------- |
|
C_D: DECLARE |
|
PACKAGE ACCESS_PKG IS |
|
TYPE T IS PRIVATE; |
C_NULL : CONSTANT T; |
C1 : CONSTANT T; |
C10 : CONSTANT T; |
C100 : CONSTANT T; |
C101 : CONSTANT T; |
|
PRIVATE |
TYPE T IS ACCESS INTEGER; |
C_NULL : CONSTANT T := NULL; |
C1 : CONSTANT T := NEW INTEGER'(1); |
C10 : CONSTANT T := NEW INTEGER'(10); |
C100 : CONSTANT T := NEW INTEGER'(100); |
C101 : CONSTANT T := NEW INTEGER'(101); |
|
END ACCESS_PKG; |
|
USE ACCESS_PKG; |
|
--------------------------------------------------- |
|
BEGIN -- C_D; |
|
C : DECLARE |
|
I : T; |
E : EXCEPTION; |
PROCEDURE P (PI : IN T; PO : OUT T; PIO : IN OUT T) IS |
|
TEMP : T; |
|
BEGIN -- P |
|
TEMP := PI; -- SAVE VALUE OF PI AT PROC ENTRY. |
|
I := C101; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (ACCESS) " & |
"ACTUAL VARIABLE CHANGES THE VALUE " & |
"OF INPUT PARAMETER"); |
TEMP := PI; -- RESET TEMP FOR NEXT CASE. |
END IF; |
|
PO := C1; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (ACCESS) OUT " & |
"PARAMETER CHANGES THE VALUE OF " & |
"INPUT PARAMETER"); |
TEMP := PI; -- RESET TEMP FOR NEXT CASE. |
END IF; |
|
PIO := C10; |
IF (PI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE (ACCESS) IN " & |
"OUT PARAMETER CHANGES THE VALUE " & |
"OF INPUT PARAMETER"); |
END IF; |
|
RAISE E; -- CHECK EXCEPTION HANDLING. |
END P; |
|
BEGIN -- C |
I := C100; |
P (I, I, I); |
FAILED ("EXCEPTION NOT RAISED - C"); |
EXCEPTION |
WHEN E => |
IF (I /= C101) THEN |
FAILED ("OUT OR IN OUT ACTUAL PROCEDURE " & |
"PARAMETER VALUE CHANGED DESPITE " & |
"RAISED EXCEPTION"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - C"); |
END C; |
|
--------------------------------------------------- |
|
D : DECLARE |
|
I, J : T; |
|
FUNCTION F (FI : IN T) RETURN T IS |
|
TEMP : T := FI; -- SAVE VALUE OF FI AT FN ENTRY. |
|
BEGIN -- F |
I := C100; |
IF (FI /= TEMP) THEN |
FAILED ("ASSIGNMENT TO PRIVATE " & |
"(ACCESS) ACTUAL FUNCTION " & |
"PARAMETER CHANGES THE VALUE " & |
"OF INPUT PARAMETER"); |
END IF; |
RETURN C_NULL; |
END F; |
|
BEGIN -- D |
I := C_NULL; |
J := F(I); |
END D; |
|
END C_D; |
|
--------------------------------------------------- |
|
RESULT; |
|
END C62003B; |
/c64201b.ada
0,0 → 1,101
-- C64201B.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. |
--* |
-- CHECK THAT INITALIZATION OF IN PARAMETERS OF A TASK |
-- TYPE IS PERMITTED. |
-- (SEE ALSO 7.4.4/T2 FOR TESTS OF LIMITED PRIVATE TYPES.) |
|
-- CVP 5/14/81 |
-- ABW 7/1/82 |
-- BHS 7/9/84 |
|
WITH REPORT; |
PROCEDURE C64201B IS |
|
USE REPORT; |
|
BEGIN |
|
TEST( "C64201B" , "CHECK THAT INITIALIZATION OF IN PARAMETERS " & |
"OF A TASK TYPE IS PERMITTED" ); |
|
DECLARE |
|
GLOBAL : INTEGER := 10; |
|
TASK TYPE T_TYPE IS |
ENTRY E (X : IN OUT INTEGER); |
END; |
|
TSK1, TSK2 : T_TYPE; |
|
TASK BODY T_TYPE IS |
BEGIN |
ACCEPT E (X : IN OUT INTEGER) DO |
X := X - 1; |
END E; |
ACCEPT E (X : IN OUT INTEGER) DO |
X := X + 1; |
END E; |
END T_TYPE; |
|
|
PROCEDURE PROC1 (T : T_TYPE := TSK1) IS |
BEGIN |
T.E (X => GLOBAL); |
END PROC1; |
|
PROCEDURE PROC2 (T : T_TYPE := TSK1) IS |
BEGIN |
T.E (X => GLOBAL); |
IF (GLOBAL /= IDENT_INT(8)) THEN |
FAILED( "TASK NOT PASSED IN PROC1, " & |
"DEFAULT TSK1 EMPLOYED" ); |
END IF; |
END PROC2; |
|
PROCEDURE TERM (T : T_TYPE; NUM : CHARACTER) IS |
BEGIN |
IF NOT T'TERMINATED THEN |
ABORT T; |
COMMENT ("ABORTING TASK " & NUM); |
END IF; |
END TERM; |
|
BEGIN |
|
PROC1(TSK2); |
IF GLOBAL /= 9 THEN |
FAILED ("INCORRECT GLOBAL VALUE AFTER PROC1"); |
ELSE |
PROC2; |
END IF; |
|
TERM(TSK1, '1'); |
TERM(TSK2, '2'); |
END; |
|
RESULT; |
|
END C64201B; |
/c65003a.ada
0,0 → 1,100
-- C65003A.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. |
--* |
-- CHECK THAT IF NO RETURN STATEMENT IS EXECUTED, A FUNCTION RAISES |
-- PROGRAM_ERROR. DETERMINE WHERE THE EXCEPTION IS RAISED. |
|
-- THIS LACK OF AN EXECUTABLE RETURN IS DETECTABLE AT COMPILE TIME IN |
-- THIS TEST. |
|
-- JBG 10/14/83 |
-- SPS 2/22/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C65003A IS |
|
EXCEPTION_RAISED : BOOLEAN := FALSE; |
FUNCTION RETURN_IN_EXCEPTION RETURN INTEGER IS |
BEGIN |
IF FALSE THEN |
RETURN 5; |
END IF; |
EXCEPTION |
WHEN PROGRAM_ERROR => |
COMMENT ("PROGRAM_ERROR RAISED IN FUNCTION BODY - " & |
"RETURN_IN_EXCEPTION"); |
EXCEPTION_RAISED := TRUE; |
RETURN 5; |
END RETURN_IN_EXCEPTION; |
|
FUNCTION NO_RETURN RETURN INTEGER IS |
NO_RETURN_EXCEPTION : EXCEPTION; |
BEGIN |
RAISE NO_RETURN_EXCEPTION; |
RETURN 5; |
EXCEPTION |
WHEN NO_RETURN_EXCEPTION => |
NULL; |
END NO_RETURN; |
|
BEGIN |
|
TEST ("C65003A", "CHECK THAT PROGRAM_ERROR IS RAISED IF A " & |
"FUNCTION RETURNS WITHOUT EXECUTING A RETURN " & |
"STATEMENT"); |
|
BEGIN |
|
IF RETURN_IN_EXCEPTION = RETURN_IN_EXCEPTION THEN |
IF NOT EXCEPTION_RAISED THEN |
FAILED ("PROGRAM_ERROR NOT RAISED - " & |
"RETURN_IN_EXCEPTION"); |
END IF; |
END IF; |
|
EXCEPTION |
|
WHEN PROGRAM_ERROR => |
COMMENT ("PROGRAM_ERROR RAISED AT POINT OF CALL " & |
"- RETURN_IN_EXCEPTION"); |
|
END; |
|
|
BEGIN |
|
IF NO_RETURN = NO_RETURN THEN |
FAILED ("PROGRAM_ERROR NOT RAISED - NO_RETURN"); |
END IF; |
|
EXCEPTION |
|
WHEN PROGRAM_ERROR => |
COMMENT ("PROGRAM_ERROR RAISED WHEN NO RETURN IN " & |
"EXCEPTION HANDLER"); |
END; |
|
RESULT; |
|
END C65003A; |
/c64201c.ada
0,0 → 1,196
-- C64201C.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. |
--* |
-- CHECK THAT INITIALIZATION OF IN PARAMETERS OF A COMPOSITE |
-- TYPE HAVING AT LEAST ONE COMPONENT (INCLUDING COMPONENTS |
-- OF COMPONENTS) OF A TASK TYPE IS PERMITTED. |
-- (SEE ALSO 7.4.4/T2 FOR TESTS OF LIMITED PRIVATE TYPES.) |
|
-- CVP 5/14/81 |
-- ABW 7/1/82 |
-- BHS 7/9/84 |
|
WITH REPORT; |
USE REPORT; |
PROCEDURE C64201C IS |
|
|
GLOBAL : INTEGER := 10; |
|
|
TASK TYPE T IS |
ENTRY E (X : IN OUT INTEGER); |
END; |
|
TYPE REC_T IS |
RECORD |
TT : T; |
BB : BOOLEAN := TRUE; |
END RECORD; |
|
TYPE REC_REC_T IS |
RECORD |
RR : REC_T; |
END RECORD; |
|
TYPE ARR_T IS ARRAY (1 .. 2) OF T; |
|
TYPE ARR_REC_T IS ARRAY (1 .. 2) OF REC_T; |
|
RT1, RT2 : REC_T; |
RRT1, RRT2 : REC_REC_T; |
AT1, AT2 : ARR_T; |
ART1, ART2 : ARR_REC_T; |
|
|
TASK BODY T IS |
BEGIN |
ACCEPT E (X : IN OUT INTEGER) DO |
X := X - 1; |
END E; |
ACCEPT E (X : IN OUT INTEGER) DO |
X := X + 1; |
END E; |
END T; |
|
|
PROCEDURE PROC1A (P1X : REC_T := RT1) IS |
BEGIN |
IF P1X.BB THEN -- EXPECT RT2 PASSED. |
FAILED( "RECORD OF TASK NOT PASSED, DEFAULT EMPLOYED" ); |
END IF; |
END PROC1A; |
|
PROCEDURE PROC1B (P1X : REC_T := RT1) IS |
BEGIN |
IF NOT P1X.BB THEN -- EXPECT DEFAULT USED. |
FAILED( "DEFAULT RECORD OF TASK NOT EMPLOYED" ); |
END IF; |
END PROC1B; |
|
|
PROCEDURE PROC2A (P2X : REC_REC_T := RRT1) IS |
BEGIN |
IF P2X.RR.BB THEN -- EXPECT RRT2 PASSED. |
FAILED( "RECORD OF RECORD OF TASK NOT PASSED, " & |
"DEFAULT EMPLOYED" ); |
END IF; |
END PROC2A; |
|
PROCEDURE PROC2B (P2X : REC_REC_T := RRT1) IS |
BEGIN |
IF NOT P2X.RR.BB THEN -- EXPECT DEFAULT USED. |
FAILED( "DEFAULT RECORD OF RECORD OF TASK " & |
"NOT EMPLOYED" ); |
END IF; |
END PROC2B; |
|
|
PROCEDURE PROC3 (P3X : ARR_T := AT1) IS |
BEGIN |
P3X(1).E (X => GLOBAL); -- CALL TO AT2(1).E, |
-- GLOBAL => GLOBAL - 1. |
END PROC3; |
|
PROCEDURE PROC4 (P4X : ARR_T := AT1) IS |
BEGIN |
P4X(1).E (X => GLOBAL); -- CALL TO DEFAULT AT1(1).E, |
-- GLOBAL => GLOBAL - 1. |
IF GLOBAL /= IDENT_INT(8) THEN |
FAILED( "ARRAY OF TASKS NOT PASSED " & |
"CORRECTLY IN PROC3" ); |
END IF; |
END PROC4; |
|
PROCEDURE PROC5 (P5X : ARR_REC_T := ART1) IS |
BEGIN |
P5X(1).TT.E (X => GLOBAL); -- CALL TO ART2(1).TT.E, |
-- GLOBAL => GLOBAL - 1. |
END PROC5; |
|
PROCEDURE PROC6 (P6X : ARR_REC_T := ART1) IS |
BEGIN |
P6X(1).TT.E (X => GLOBAL); -- CALL DEFAULT ART1(1).TT.E, |
-- GLOBAL => GLOBAL - 1. |
IF GLOBAL /= IDENT_INT(8) THEN |
FAILED( "ARRAY OF RECORDS OF TASKS NOT " & |
"PASSED IN PROC5" ); |
END IF; |
END PROC6; |
|
PROCEDURE TERM (TSK : T; NUM : CHARACTER) IS |
BEGIN |
IF NOT TSK'TERMINATED THEN |
ABORT TSK; |
COMMENT ("ABORTING TASK " & NUM); |
END IF; |
END TERM; |
|
|
BEGIN |
|
TEST( "C64201C" , "CHECK THAT INITIALIZATION OF IN " & |
"PARAMETERS OF A COMPOSITE TYPE " & |
"IS PERMITTED" ); |
|
RT2.BB := FALSE; |
RRT2.RR.BB := FALSE; |
|
PROC1A(RT2); -- NO ENTRY CALL |
PROC1B; -- NO ENTRY CALL |
PROC2A(RRT2); -- NO ENTRY CALL |
PROC2B; -- NO ENTRY CALL |
|
PROC3(AT2); -- CALL AT2(1).E |
IF GLOBAL /= 9 THEN |
FAILED ("INCORRECT GLOBAL VALUE AFTER PROC3"); |
ELSE |
PROC4; -- CALL AT1(1).E |
END IF; |
|
GLOBAL := 10; |
PROC5(ART2); -- CALL ART2(1).TT.E |
IF GLOBAL /= 9 THEN |
FAILED ("INCORRECT GLOBAL VALUE AFTER PROC5"); |
ELSE |
PROC6; -- CALL ART1(1).TT.E |
END IF; |
|
-- MAKE SURE ALL TASKS TERMINATED |
TERM (RT1.TT, '1'); |
TERM (RT2.TT, '2'); |
TERM (RRT1.RR.TT, '3'); |
TERM (RRT2.RR.TT, '4'); |
TERM (AT1(1), '5'); |
TERM (AT2(1), '6'); |
TERM (AT1(2), '7'); |
TERM (AT2(2), '8'); |
TERM (ART1(1).TT, '9'); |
TERM (ART2(1).TT, 'A'); |
TERM (ART1(2).TT, 'B'); |
TERM (ART2(2).TT, 'C'); |
|
RESULT; |
|
END C64201C; |
/c64104a.ada
0,0 → 1,215
-- C64104A.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 FOR OUT OF RANGE SCALAR |
-- ARGUMENTS. SUBTESTS ARE: |
-- (A) STATIC IN ARGUMENT. |
-- (B) DYNAMIC IN ARGUMENT. |
-- (C) IN OUT, OUT OF RANGE ON CALL. |
-- (D) OUT, OUT OF RANGE ON RETURN. |
-- (E) IN OUT, OUT OF RANGE ON RETURN. |
|
-- HISTORY: |
-- DAS 01/14/81 |
-- CPP 07/03/84 |
-- LB 11/20/86 ADDED CODE TO ENSURE IN SUBTESTS WHICH CHECK |
-- RETURNED VALUES, THAT SUBPROGRAMS ARE ACTUALLY |
-- CALLED. |
-- JET 08/04/87 FIXED HEADER FOR STANDARD FORMAT. |
|
WITH REPORT; USE REPORT; |
PROCEDURE C64104A IS |
|
SUBTYPE DIGIT IS INTEGER RANGE 0..9; |
|
CALLED : BOOLEAN; |
D : DIGIT; |
I : INTEGER; |
M1 : CONSTANT INTEGER := IDENT_INT(-1); |
COUNT : INTEGER := 0; |
SUBTYPE SI IS INTEGER RANGE M1 .. 10; |
|
PROCEDURE P1 (PIN : IN DIGIT; WHO : STRING) IS -- (A), (B) |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - P1 " & WHO); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN P1 FOR " & WHO); |
END P1; |
|
PROCEDURE P2 (PINOUT : IN OUT DIGIT; WHO : STRING) IS -- (C) |
BEGIN |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - P2 " & WHO); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN P2 FOR " & WHO); |
END P2; |
|
PROCEDURE P3 (POUT : OUT SI; WHO : STRING) IS -- (D) |
BEGIN |
IF WHO = "10" THEN |
POUT := IDENT_INT(10); -- (10 IS NOT A DIGIT) |
ELSE |
POUT := -1; |
END IF; |
CALLED := TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN P3 FOR " & WHO); |
END P3; |
|
PROCEDURE P4 (PINOUT : IN OUT INTEGER; WHO : STRING) IS -- (E) |
BEGIN |
IF WHO = "10" THEN |
PINOUT := 10; -- (10 IS NOT A DIGIT) |
ELSE |
PINOUT := IDENT_INT(-1); |
END IF; |
CALLED := TRUE; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN P4 FOR" & WHO); |
END P4; |
|
BEGIN |
|
TEST ("C64104A", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"FOR OUT OF RANGE SCALAR ARGUMENTS"); |
|
BEGIN -- (A) |
P1 (10, "10"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED FOR P1 (10)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P1 (10)"); |
END; -- (A) |
|
BEGIN -- (B) |
P1 (IDENT_INT (-1), "-1"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED FOR P1 (" & |
"IDENT_INT (-1))"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P1 (" & |
"IDENT_INT (-1))"); |
END; --(B) |
|
BEGIN -- (C) |
I := IDENT_INT (10); |
P2 (I, "10"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED FOR P2 (10)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P2 (10)"); |
END; -- (C) |
|
BEGIN -- (C1) |
I := IDENT_INT (-1); |
P2 (I, "-1"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED FOR P2 (-1)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P2 (-1)"); |
END; -- (C1) |
|
BEGIN -- (D) |
CALLED := FALSE; |
D := IDENT_INT (1); |
P3 (D, "10"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED ON RETURN FROM" & |
" P3 (10)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P3 WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P3 (10)"); |
END; -- (D) |
|
BEGIN -- (D1) |
CALLED := FALSE; |
D := IDENT_INT (1); |
P3 (D, "-1"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED ON RETURN FROM" & |
" P3 (-1)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P3 WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P3 (-1)"); |
END; -- (D1) |
|
BEGIN -- (E) |
CALLED := FALSE; |
D := 9; |
P4 (D, "10"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED ON RETURN FROM" & |
" P4 (10)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P4 WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P4 (10)"); |
END; -- (E) |
|
BEGIN -- (E1) |
CALLED := FALSE; |
D := 0; |
P4 (D, "-1"); |
FAILED ("CONSTRAINT_ERROR NOT RAISED ON RETURN FROM" & |
" P4 (-1)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
COUNT := COUNT + 1; |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P4 WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED FOR P4 (-1)"); |
END; -- (E1) |
|
IF (COUNT /= 8) THEN |
FAILED ("INCORRECT NUMBER OF CONSTRAINT_ERRORS RAISED"); |
END IF; |
|
RESULT; |
|
END C64104A; |
/c65003b.ada
0,0 → 1,73
-- C65003B.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. |
--* |
-- CHECK THAT IF NO RETURN STATEMENT IS EXECUTED, A FUNCTION RAISES |
-- PROGRAM_ERROR. DETERMINE WHERE THE EXCEPTION IS RAISED. |
|
-- THIS LACK OF AN EXECUTABLE RETURN IS NOT DETECTABLE AT COMPILE TIME. |
|
-- JBG 10/14/83 |
-- SPS 2/22/84 |
|
WITH REPORT; USE REPORT; |
PROCEDURE C65003B IS |
|
EXCEPTION_RAISED : BOOLEAN := FALSE; |
|
FUNCTION RETURN_IN_EXCEPTION RETURN INTEGER IS |
BEGIN |
WHILE NOT EQUAL (1, 1) LOOP |
RETURN 5; |
END LOOP; |
EXCEPTION |
WHEN PROGRAM_ERROR => |
COMMENT ("PROGRAM_ERROR RAISED IN FUNCTION BODY"); |
EXCEPTION_RAISED := TRUE; |
RETURN 5; |
END RETURN_IN_EXCEPTION; |
|
BEGIN |
|
TEST ("C65003B", "CHECK THAT PROGRAM_ERROR IS RAISED IF A " & |
"FUNCTION RETURNS WITHOUT EXECUTING A RETURN " & |
"STATEMENT"); |
|
BEGIN |
|
IF RETURN_IN_EXCEPTION = RETURN_IN_EXCEPTION THEN |
IF NOT EXCEPTION_RAISED THEN |
FAILED ("PROGRAM_ERROR NOT RAISED"); |
END IF; |
END IF; |
|
EXCEPTION |
|
WHEN PROGRAM_ERROR => |
COMMENT ("PROGRAM_ERROR RAISED AT POINT OF CALL"); |
|
END; |
|
RESULT; |
|
END C65003B; |
/c64104b.ada
0,0 → 1,136
-- C64104B.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER APPROPRIATE CIRCUMSTANCES |
-- WITH RESPECT TO PARAMETERS OF RECORD TYPES. SUBTESTS INVOLVE |
-- ACTUAL RECORD PARAMETERS WHOSE CONSTRAINT VALUES ARE NOT EQUAL |
-- TO THE CONSTRAINTS ON THEIR CORRESPONDING FORMAL PARAMETERS: |
-- (A) IN PARAMETER, STATIC AGGREGATE. |
-- (B) IN PARAMETER, DYNAMIC AGGREGATE. |
-- (C) IN PARAMETER, VARIABLE. |
-- (D) IN OUT PARAMETER, EXCEPTION RAISED ON CALL. |
-- (E) OUT PARAMETER, EXCEPTION RAISED ON CALL. |
|
-- DAS 2/11/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104B IS |
|
USE REPORT; |
SUBTYPE INT IS INTEGER RANGE 0..10; |
TYPE REC (N : INT := 0) IS |
RECORD |
A : STRING (1..N); |
END RECORD; |
SUBTYPE SREC IS REC(N=>3); |
PROCEDURE P1 (R : IN SREC) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL TO P1"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P1"); |
END P1; |
|
PROCEDURE P2 (R : IN OUT SREC) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL TO P2"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P2"); |
END P2; |
|
PROCEDURE P3 (R : OUT SREC) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL TO P3"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE P3"); |
END P3; |
|
BEGIN |
|
TEST ("C64104B", "CHECK RAISING OF CONSTRAINT_ERROR FOR " & |
"PARAMETERS OF RECORD TYPES"); |
|
BEGIN -- (A) |
P1 ((2,"AA")); |
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (A)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (A)"); |
END; -- (A) |
|
BEGIN -- (B) |
P1 ((IDENT_INT(2), "AA")); |
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (B)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (B)"); |
END; -- (B) |
|
DECLARE -- (C) |
R : REC := (IDENT_INT(2), "AA"); |
BEGIN -- (C) |
P1 (R); |
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (C)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (C)"); |
END; -- (C) |
|
DECLARE -- (D) |
R : REC := (IDENT_INT(2), "AA"); |
BEGIN -- (D) |
P2 (R); |
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (D)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (D)"); |
END; -- (D) |
|
|
DECLARE -- (E) |
R : REC; |
BEGIN -- (E) |
P3 (R); |
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (E)"); |
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (E)"); |
END; -- (E) |
|
RESULT; |
|
END C64104B; |
/c64104c.ada
0,0 → 1,200
-- C64104C.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE |
-- APPROPRIATE CIRCUMSTANCES FOR ARRAY PARAMETERS, NAMELY |
-- WHEN THE ACTUAL BOUNDS DON'T MATCH THE FORMAL BOUNDS |
-- (BEFORE THE CALL FOR ALL MODES). |
-- SUBTESTS ARE: |
-- (A) IN MODE, ONE DIMENSION, STATIC AGGREGATE. |
-- (B) IN MODE, TWO DIMENSIONS, DYNAMIC AGGREGATE. |
-- (C) IN MODE, TWO DIMENSIONS, DYNAMIC VARIABLE. |
-- (D) IN OUT MODE, THREE DIMENSIONS, STATIC VARIABLE. |
-- (E) OUT MODE, ONE DIMENSION, DYNAMIC VARIABLE. |
-- (F) IN OUT MODE, NULL STRING AGGREGATE. |
-- (G) IN OUT MODE, TWO DIMENSIONS, NULL AGGREGATE (OK CASE). |
-- IN OUT MODE, TWO DIMENSIONS, NULL AGGREGATE. |
|
-- JRK 3/17/81 |
-- SPS 10/26/82 |
-- CPP 8/6/84 |
-- PWN 11/30/94 REMOVED TEST ILLEGAL IN ADA 9X. |
|
WITH REPORT; |
PROCEDURE C64104C IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104C", "CHECK THAT CONSTRAINT_ERROR IS RAISED WHEN " & |
"ACTUAL ARRAY BOUNDS DON'T MATCH FORMAL BOUNDS"); |
|
-------------------------------------------------- |
|
DECLARE -- (A) |
SUBTYPE ST IS STRING (1..3); |
|
PROCEDURE P (A : ST) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL - (A)"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (A)"); |
END P; |
|
BEGIN -- (A) |
|
P ("AB"); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - (A)"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - (A)"); |
END; -- (A) |
|
-------------------------------------------------- |
|
DECLARE -- (B) |
|
SUBTYPE S IS INTEGER RANGE 1..3; |
TYPE T IS ARRAY (S,S) OF INTEGER; |
|
PROCEDURE P (A : T) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL - (B)"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (B)"); |
END P; |
|
BEGIN -- (B) |
|
P ((1..3 => (1..IDENT_INT(2) => 0))); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - (B)"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - (B)"); |
END; -- (B) |
|
-------------------------------------------------- |
|
DECLARE -- (C) |
|
SUBTYPE S IS INTEGER RANGE 1..5; |
TYPE T IS ARRAY (S RANGE <>, S RANGE <>) OF INTEGER; |
SUBTYPE ST IS T (1..3,1..3); |
V : T (1..IDENT_INT(2), 1..3) := |
(1..IDENT_INT(2) => (1..3 => 0)); |
|
PROCEDURE P (A :ST) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL - (C)"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (C)"); |
END P; |
|
BEGIN -- (C) |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - (C)"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - (C)"); |
END; -- (C) |
|
-------------------------------------------------- |
|
DECLARE -- (D) |
|
SUBTYPE S IS INTEGER RANGE 1..5; |
TYPE T IS ARRAY (S RANGE <>, S RANGE <>, S RANGE <>) OF |
INTEGER; |
SUBTYPE ST IS T (1..3, 1..3, 1..3); |
V : T (1..3, 1..2, 1..3) := |
(1..3 => (1..2 => (1..3 => 0))); |
|
PROCEDURE P (A : IN OUT ST) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALLL - (D)"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (D)"); |
END P; |
|
BEGIN -- (D) |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL - (D)"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED - (D)"); |
END; -- (D) |
|
-------------------------------------------------- |
|
|
DECLARE -- (G) |
|
SUBTYPE S IS INTEGER RANGE 1..5; |
TYPE T IS ARRAY (S RANGE <>, S RANGE <>) OF CHARACTER; |
SUBTYPE ST IS T (2..1, 2..1); |
V : T (2..1, 2..1) := (2..1 => (2..1 => ' ')); |
|
PROCEDURE P (A : IN OUT ST) IS |
BEGIN |
COMMENT ("OK CASE CALLED CORRECTLY"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE - (G)"); |
END P; |
|
BEGIN -- (G) |
|
P (V); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
FAILED ("CONSTRAINT_ERROR RAISED ON OK CASE - (G)"); |
WHEN OTHERS => |
FAILED ("OTHER EXCEPTION RAISED ON OK CASE - (G)"); |
END; -- (G) |
|
-------------------------------------------------- |
|
-------------------------------------------------- |
|
RESULT; |
END C64104C; |
/c64104d.ada
0,0 → 1,93
-- C64104D.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (A) BEFORE CALL, IN MODE, STATIC PRIVATE DISCRIMINANT. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- ABW 6/11/82 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104D IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104D", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
PACKAGE PKG IS |
TYPE E IS (E1, E2, E3); |
TYPE T (D : E := E1) IS PRIVATE; |
TYPE AR IS ARRAY (E1 .. E3) OF INTEGER; |
PRIVATE |
TYPE T (D : E := E1) IS |
RECORD |
I : INTEGER; |
A : AR; |
END RECORD; |
END PKG; |
USE PKG; |
|
TYPE A IS ACCESS T; |
SUBTYPE A1 IS A(E3); |
V : A (E2) := NEW T (E2); |
|
PROCEDURE P (X : A1) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
------------------------------------------------ |
|
RESULT; |
|
END C64104D; |
/c64108a.ada
0,0 → 1,148
-- C64108A.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. |
--* |
-- CHECK THAT ALL PERMITTED FORMS OF VARIABLE NAMES ARE PERMITTED |
-- AS ACTUAL PARAMETERS. |
|
-- DAS 2/10/81 |
-- SPS 10/26/82 |
-- SPS 11/5/82 |
|
WITH REPORT; |
PROCEDURE C64108A IS |
|
USE REPORT; |
SUBTYPE INT IS INTEGER RANGE 1..3; |
TYPE REC (N : INT) IS |
RECORD |
S : STRING (1..N); |
END RECORD; |
TYPE PTRSTR IS ACCESS STRING; |
|
R1,R2,R3 : REC(3); |
S1,S2,S3 : STRING (1..3); |
PTRTBL : ARRAY (1..3) OF PTRSTR; |
|
PROCEDURE P1 (S1 : IN STRING; S2: IN OUT STRING; |
S3 : OUT STRING) IS |
BEGIN |
S3 := S2; |
S2 := S1; |
END P1; |
|
PROCEDURE P2 (C1 : IN CHARACTER; C2 : IN OUT CHARACTER; |
C3 : OUT CHARACTER) IS |
BEGIN |
C3 := C2; |
C2 := C1; |
END P2; |
|
FUNCTION F1 (X : INT) RETURN PTRSTR IS |
BEGIN |
RETURN PTRTBL(X); |
END F1; |
|
FUNCTION "+" (S1,S2 : STRING) RETURN PTRSTR IS |
BEGIN |
RETURN PTRTBL(CHARACTER'POS(S1(1))-CHARACTER'POS('A')+1); |
END "+"; |
|
BEGIN |
|
TEST ("C64108A", "CHECK THAT ALL PERMITTED FORMS OF VARIABLE" & |
" NAMES ARE PERMITTED AS ACTUAL PARAMETERS"); |
|
S1 := "AAA"; |
S2 := "BBB"; |
P1 (S1, S2, S3); |
IF (S2 /= "AAA") OR (S3 /= "BBB") THEN |
FAILED ("SIMPLE VARIABLE AS AN ACTUAL PARAMETER NOT WORKING"); |
END IF; |
|
S1 := "AAA"; |
S2 := "BBB"; |
S3 := IDENT_STR("CCC"); |
P2 (S1(1), S2(IDENT_INT(1)), S3(1)); |
IF (S2 /= "ABB") OR (S3 /= "BCC") THEN |
FAILED ("INDEXED COMPONENT AS AN ACTUAL PARAMETER NOT " & |
"WORKING"); |
END IF; |
|
R1.S := "AAA"; |
R2.S := "BBB"; |
P1 (R1.S, R2.S, R3.S); |
IF (R2.S /= "AAA") OR (R3.S /= "BBB") THEN |
FAILED ("SELECTED COMPONENT AS AN ACTUAL PARAMETER" & |
" NOT WORKING"); |
END IF; |
|
S1 := "AAA"; |
S2 := "BBB"; |
P1 (S1(1..IDENT_INT(2)), S2(1..2), S3(IDENT_INT(1)..IDENT_INT(2))); |
IF (S2 /= "AAB") OR (S3 /= "BBC") THEN |
FAILED ("SLICE AS AN ACTUAL PARAMETER NOT WORKING"); |
END IF; |
|
PTRTBL(1) := NEW STRING'("AAA"); |
PTRTBL(2) := NEW STRING'("BBB"); |
PTRTBL(3) := NEW STRING'("CCC"); |
P1 (F1(1).ALL, F1(2).ALL, F1(IDENT_INT(3)).ALL); |
IF (PTRTBL(2).ALL /= "AAA") OR (PTRTBL(3).ALL /= "BBB") THEN |
FAILED ("SELECTED COMPONENT OF FUNCTION VALUE AS AN ACTUAL" & |
" PARAMETER NOT WORKING"); |
END IF; |
|
PTRTBL(1) := NEW STRING'("AAA"); |
PTRTBL(2) := NEW STRING'("BBB"); |
PTRTBL(3) := NEW STRING'("CCC"); |
S1 := IDENT_STR("AAA"); |
S2 := IDENT_STR("BBB"); |
S3 := IDENT_STR("CCC"); |
P1 ("+"(S1,S1).ALL, "+"(S2,S2).ALL, "+"(S3,S3).ALL); |
IF (PTRTBL(2).ALL /= "AAA") OR (PTRTBL(3).ALL /= "BBB") THEN |
FAILED ("SELECTED COMPONENT OF OVERLOADED OPERATOR FUNCTION" & |
" VALUE AS AN ACTUAL PARAMETER NOT WORKING"); |
END IF; |
|
PTRTBL(1) := NEW STRING'("AAA"); |
PTRTBL(2) := NEW STRING'("BBB"); |
PTRTBL(3) := NEW STRING'("CCC"); |
P2 (F1(1)(1), F1(IDENT_INT(2))(1), F1(3)(IDENT_INT(1))); |
IF (PTRTBL(2).ALL /= "ABB") OR (PTRTBL(3).ALL /= "BCC") THEN |
FAILED ("INDEXED COMPONENT OF FUNCTION VALUE AS AN ACTUAL" & |
" PARAMETER NOT WORKING"); |
END IF; |
|
PTRTBL(1) := NEW STRING'("AAA"); |
PTRTBL(2) := NEW STRING'("BBB"); |
PTRTBL(3) := NEW STRING'("CCC"); |
P1 (F1(1)(2..3), F1(2)(IDENT_INT(2)..3), F1(3)(2..IDENT_INT(3))); |
IF (PTRTBL(2).ALL /= "BAA") OR (PTRTBL(3).ALL /= "CBB") THEN |
FAILED ("SLICE OF FUNCTION VALUE AS AN ACTUAL PARAMETER" & |
" NOT WORKING"); |
END IF; |
|
RESULT; |
|
END C64108A; |
/c64104e.ada
0,0 → 1,82
-- C64104E.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (B) BEFORE CALL, IN MODE, DYNAMIC TWO DIMENSIONAL BOUNDS. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104E IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104E", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
TYPE T IS ARRAY (BOOLEAN RANGE <>, CHARACTER RANGE <>) OF |
INTEGER; |
|
TYPE A IS ACCESS T; |
SUBTYPE A1 IS A(BOOLEAN, 'A'..'C'); |
V : A := NEW T (BOOLEAN, 'A'..IDENT_CHAR('B')); |
|
PROCEDURE P (X : A1) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104E; |
/c64104f.ada
0,0 → 1,79
-- C64104F.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (C) BEFORE CALL, IN OUT MODE, STATIC ONE DIMENSIONAL BOUNDS. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104F IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104F", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
TYPE A IS ACCESS STRING; |
SUBTYPE A1 IS A(1..3); |
V : A (2..4) := NEW STRING (2..4); |
|
PROCEDURE P (X : IN OUT A1) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104F; |
/c64104g.ada
0,0 → 1,93
-- C64104G.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. |
--* |
-- CHECK THAT CONSTRAINT_ERROR IS RAISED UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (D) BEFORE CALL, IN OUT MODE, DYNAMIC RECORD DISCRIMINANTS. |
|
-- JRK 3/18/81 |
-- NL 10/13/81 |
-- SPS 10/26/82 |
|
WITH REPORT; |
PROCEDURE C64104G IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104G", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
SUBTYPE INT IS INTEGER RANGE 0..10; |
TYPE T (C : CHARACTER := 'A'; |
B : BOOLEAN := FALSE; |
I : INT := 0 |
) IS |
RECORD |
J : INTEGER; |
CASE B IS |
WHEN FALSE => |
K : INTEGER; |
WHEN TRUE => |
S : STRING (1 .. I); |
END CASE; |
END RECORD; |
|
TYPE A IS ACCESS T; |
SUBTYPE SA IS A ('Z', TRUE, 5); |
V : A := NEW T ('Z', IDENT_BOOL(FALSE), 5); |
|
PROCEDURE P (X : IN OUT SA ) IS |
BEGIN |
FAILED ("EXCEPTION NOT RAISED ON CALL"); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
P (V); |
FAILED ("EXCEPTION NOT RAISED BEFORE CALL"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
NULL; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104G; |
/c67003f.ada
0,0 → 1,319
-- C67003F.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. |
--* |
-- CHECK THAT THE PREDEFINED OPERATORS FOR THE PREDEFINED TYPES CAN BE |
-- REDEFINED. |
-- CHECK THAT THE REDEFINED OPERATOR IS INVOKED WHEN INFIX OR PREFIX |
-- NOTATION IS USED. |
|
-- HISTORY: |
-- WMC 03/21/92 TEST CREATED FROM CONSOLIDATION OF C67003[A-E].ADA |
|
|
WITH REPORT; |
|
PROCEDURE C67003F IS |
|
USE REPORT; |
|
BEGIN |
|
TEST ("C67003F", "CHECK THAT REDEFINITION OF " & |
"OPERATORS FOR PREDEFINED TYPES WORKS"); |
|
DECLARE -- INTEGER OPERATORS. |
|
-- INTEGER INFIX OPERATORS. |
|
FUNCTION "*" (X, Y : INTEGER) RETURN INTEGER IS |
BEGIN |
IF X /= Y THEN |
RETURN 1; |
ELSE RETURN 0; |
END IF; |
END "*"; |
|
FUNCTION "+" (X, Y : INTEGER) RETURN INTEGER IS |
BEGIN |
IF X /= Y THEN |
RETURN 2; |
ELSE RETURN 0; |
END IF; |
END "+"; |
|
FUNCTION "REM" (X, Y : INTEGER) RETURN INTEGER IS |
BEGIN |
IF X /= Y THEN |
RETURN 3; |
ELSE RETURN 0; |
END IF; |
END "REM"; |
|
-- INTEGER PREFIX OPERATORS. |
|
FUNCTION "+" (X : INTEGER) RETURN INTEGER IS |
BEGIN |
IF X /= 0 THEN |
RETURN 4; |
ELSE RETURN 0; |
END IF; |
END "+"; |
|
FUNCTION "ABS" (X : INTEGER) RETURN INTEGER IS |
BEGIN |
IF X /= 0 THEN |
RETURN 5; |
ELSE RETURN 0; |
END IF; |
END "ABS"; |
|
-- INTEGER RELATIONAL OPERATOR. |
|
FUNCTION "<" (X, Y : INTEGER) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END "<"; |
|
BEGIN |
|
IF IDENT_INT (3) * IDENT_INT (5) /= 1 THEN |
FAILED ("REDEFINITION OF INTEGER ""*"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_INT (1) + IDENT_INT (30) /= 2 THEN |
FAILED ("REDEFINITION OF INTEGER ""+"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_INT (7) REM IDENT_INT (8) /= 3 THEN |
FAILED ("REDEFINITION OF ""REM"" IS DEFECTIVE"); |
END IF; |
|
IF + (IDENT_INT (10)) /= 4 THEN |
FAILED ("REDEFINITION OF INTEGER UNARY ""+"" IS DEFECTIVE"); |
END IF; |
|
IF ABS (IDENT_INT (2)) /= 5 THEN |
FAILED ("REDEFINITION OF INTEGER ""ABS"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_INT (7) < IDENT_INT (8) THEN |
FAILED ("REDEFINITION OF INTEGER ""<"" IS DEFECTIVE"); |
END IF; |
|
END; |
|
DECLARE -- FLOAT OPERATORS. |
|
-- NOTE THAT ALL LITERAL VALUES USED SHOULD BE |
-- REPRESENTABLE EXACTLY. |
|
FUNCTION IDENT_FLOAT (X : FLOAT) RETURN FLOAT IS |
I : INTEGER := INTEGER (X); |
BEGIN |
IF EQUAL (I, I) THEN -- ALWAYS EQUAL. |
RETURN X; |
END IF; |
RETURN 0.0; |
END IDENT_FLOAT; |
|
-- FLOAT INFIX OPERATORS. |
|
FUNCTION "-" (X, Y : FLOAT) RETURN FLOAT IS |
BEGIN |
IF X /= Y THEN |
RETURN 1.0; |
ELSE RETURN 0.0; |
END IF; |
END "-"; |
|
FUNCTION "/" (X, Y : FLOAT) RETURN FLOAT IS |
BEGIN |
IF X /= Y THEN |
RETURN 2.0; |
ELSE RETURN 0.0; |
END IF; |
END "/"; |
|
FUNCTION "**" (X : FLOAT; Y : INTEGER) RETURN FLOAT IS |
BEGIN |
IF INTEGER (X) /= Y THEN |
RETURN 3.0; |
ELSE RETURN 0.0; |
END IF; |
END "**"; |
|
-- FLOAT PREFIX OPERATOR. |
|
FUNCTION "-" (X : FLOAT) RETURN FLOAT IS |
BEGIN |
IF X /= 0.0 THEN |
RETURN 4.0; |
ELSE RETURN 0.0; |
END IF; |
END "-"; |
|
-- FLOAT RELATIONAL OPERATOR. |
|
FUNCTION "<=" (X, Y : FLOAT) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END "<="; |
|
BEGIN |
|
IF IDENT_FLOAT (50.0) - IDENT_FLOAT (100.0) /= 1.0 THEN |
FAILED ("REDEFINITION OF FLOAT ""-"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_FLOAT (5.0) / IDENT_FLOAT (1.0) /= 2.0 THEN |
FAILED ("REDEFINITION OF FLOAT ""/"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_FLOAT (3.0) ** IDENT_INT (2) /= 3.0 THEN |
FAILED ("REDEFINITION OF FLOAT ""**"" IS DEFECTIVE"); |
END IF; |
|
IF -(IDENT_FLOAT (5.0)) /= 4.0 THEN |
FAILED ("REDEFINITION OF FLOAT UNARY ""-"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_FLOAT (1.0) <= IDENT_FLOAT (5.0) THEN |
FAILED ("REDEFINITION OF FLOAT ""<="" IS DEFECTIVE"); |
END IF; |
|
END; |
|
DECLARE -- BOOLEAN OPERATORS. |
|
-- BOOLEAN LOGICAL OPERATORS. |
|
FUNCTION "AND" (X, Y : BOOLEAN) RETURN BOOLEAN IS |
BEGIN |
IF X AND THEN Y THEN |
RETURN FALSE; |
ELSE RETURN TRUE; |
END IF; |
END "AND"; |
|
FUNCTION "XOR" (X, Y : BOOLEAN) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END "XOR"; |
|
-- BOOLEAN RELATIONAL OPERATOR. |
|
FUNCTION ">" (X, Y : BOOLEAN) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END ">"; |
|
BEGIN |
|
IF IDENT_BOOL (TRUE) AND IDENT_BOOL (TRUE) THEN |
FAILED ("REDEFINITION OF ""AND"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_BOOL (TRUE) XOR IDENT_BOOL (FALSE) THEN |
FAILED ("REDEFINITION OF ""XOR"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_BOOL (TRUE) > IDENT_BOOL (FALSE) THEN |
FAILED ("REDEFINITION OF BOOLEAN "">"" IS DEFECTIVE"); |
END IF; |
|
END; |
|
DECLARE -- STRING OPERATORS. |
|
S1 : STRING (1..2) := "A" & IDENT_CHAR ('B'); |
S2 : STRING (1..2) := "C" & IDENT_CHAR ('D'); |
|
FUNCTION "&" (X, Y : STRING) RETURN STRING IS |
Z : STRING (1 .. X'LENGTH + Y'LENGTH); |
BEGIN |
Z (1 .. Y'LENGTH) := Y; |
Z (Y'LENGTH + 1 .. Z'LAST) := X; |
RETURN Z; |
END "&"; |
|
FUNCTION "&" (X : CHARACTER; Y : STRING) RETURN STRING IS |
Z : STRING (1 .. Y'LENGTH + 1); |
BEGIN |
Z (1 .. Y'LENGTH) := Y; |
Z (Z'LAST) := X; |
RETURN Z; |
END "&"; |
|
-- STRING RELATIONAL OPERATOR. |
|
FUNCTION ">=" (X, Y : STRING) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END ">="; |
|
BEGIN |
|
IF S1 & S2 /= "CDAB" THEN |
FAILED ("BAD REDEFINITION OF ""&"" (S,S)"); |
END IF; |
|
IF IDENT_CHAR ('C') & S1 /= "ABC" THEN |
FAILED ("BAD REDEFINITION OF ""&"" (C,S)"); |
END IF; |
|
IF S2 >= S1 THEN |
FAILED ("BAD REDEFINITION OF STRING "">="""); |
END IF; |
|
END; |
|
DECLARE -- CHARACTER OPERATORS. |
|
-- CHARACTER RELATIONAL OPERATORS. |
|
FUNCTION ">" (X, Y : CHARACTER) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END ">"; |
|
FUNCTION "<=" (X, Y : CHARACTER) RETURN BOOLEAN IS |
BEGIN |
RETURN X = Y; |
END "<="; |
|
BEGIN |
|
IF IDENT_CHAR ('C') > IDENT_CHAR ('B') THEN |
FAILED ("REDEFINITION OF CHARACTER "">"" IS DEFECTIVE"); |
END IF; |
|
IF IDENT_CHAR ('A') <= IDENT_CHAR ('E') THEN |
FAILED ("REDEFINITION OF CHARACTER ""<="" IS DEFECTIVE"); |
END IF; |
|
END; |
|
RESULT; |
|
END C67003F; |
/c64104h.ada
0,0 → 1,111
-- C64104H.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 UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (E) AFTER RETURN, IN OUT MODE, STATIC LIMITED PRIVATE |
-- DISCRIMINANTS. |
|
-- HISTORY: |
-- JRK 03/18/81 CREATED ORIGINAL TEST. |
-- NL 10/13/81 |
-- LB 11/25/86 ADDED CODE TO ENSURE THAT SUBPROGRAMS ARE |
-- ACTUALLY BEING CALLED. |
-- BCB 11/12/87 CHANGED HEADER TO STANDARD FORMAT. |
|
|
WITH REPORT; |
PROCEDURE C64104H IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104H", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
PACKAGE PKG IS |
SUBTYPE INT IS INTEGER RANGE 0..10; |
SUBTYPE CHAR IS CHARACTER RANGE 'A' .. 'C'; |
TYPE T (I : INT := 0; C : CHAR := 'A') IS |
LIMITED PRIVATE; |
PRIVATE |
TYPE T (I : INT := 0; C : CHAR := 'A') IS |
RECORD |
J : INTEGER; |
CASE C IS |
WHEN 'A' => |
K : INTEGER; |
WHEN 'B' => |
S : STRING (1..I); |
WHEN OTHERS => |
NULL; |
END CASE; |
END RECORD; |
END PKG; |
USE PKG; |
|
CALLED : BOOLEAN; |
TYPE A IS ACCESS T; |
|
V : A (2,'B') := NEW T (2,'B'); |
|
PROCEDURE P (X : IN OUT A) IS |
BEGIN |
CALLED := TRUE; |
X := NEW T (2,'A'); |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
CALLED := FALSE; |
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104H; |
/c641001.a
0,0 → 1,281
-- C641001.A |
-- |
-- 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 actual parameters passed by reference are view converted |
-- to the nominal subtype of the formal parameter. |
-- |
-- TEST DESCRIPTION: |
-- Check that sliding is allowed for formal parameters, especially |
-- check cases that would have caused errors in Ada'83. |
-- Check that length check for a formal parameter (esp out mode) |
-- is performed before the call, not after. |
-- |
-- notes: 6.2; by reference ::= tagged, task, protected, |
-- limited (nonprivate), or composite containing such |
-- 4.6; view conversion |
-- |
-- |
-- CHANGE HISTORY: |
-- 26 JAN 96 SAIC Initial version |
-- 04 NOV 96 SAIC Commentary revision for release 2.1 |
-- 27 FEB 97 PWB.CTA Corrected reference to the wrong string |
--! |
|
----------------------------------------------------------------- C641001_0 |
|
package C641001_0 is |
|
subtype String_10 is String(1..10); |
|
procedure Check_String_10( S : out String_10; Start, Stop: Natural ); |
|
procedure Check_Illegal_Slice_Reference( Slice_Passed : in out String; |
Index: Natural ); |
|
type Tagged_Data(Bound: Natural) is tagged record |
Data_Item : String(1..Bound) := (others => '*'); |
end record; |
|
type Tag_List is array(Natural range <>) of Tagged_Data(5); |
|
subtype Tag_List_10 is Tag_List(1..10); |
|
procedure Check_Tag_Slice( TL : in out Tag_List_10 ); |
|
procedure Check_Out_Tagged_Data( Formal : out Tagged_Data ); |
|
end C641001_0; |
|
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
|
with Report; |
with TCTouch; |
package body C641001_0 is |
|
String_Data : constant String := "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
|
procedure Check_String_10( S : out String_10; Start, Stop: Natural ) is |
begin |
if S'Length /= 10 then |
Report.Failed("Length check not performed prior to execution"); |
end if; |
S := String_Data(Start..Stop); |
exception |
when others => Report.Failed("Exception encountered in Check_String_10"); |
end Check_String_10; |
|
procedure Check_Illegal_Slice_Reference( Slice_Passed : in out String; |
Index: Natural ) is |
begin |
-- essentially "do-nothing" for optimization foilage... |
if Slice_Passed(Index) in Character then |
-- Intent is ^^^^^ should raise Constraint_Error |
Report.Failed("Illegal Slice provided legal character"); |
else |
Report.Failed("Illegal Slice provided illegal character"); |
end if; |
exception |
when Constraint_Error => |
null; -- expected case |
when others => |
Report.Failed("Wrong exception in Check_Illegal_Slice_Reference"); |
end Check_Illegal_Slice_Reference; |
|
procedure Check_Tag_Slice( TL : in out Tag_List_10 ) is |
-- if the view conversion is not performed, one of the following checks |
-- will fail (given data passed as 0..9 and then 2..11) |
begin |
Check_Under_Index: -- index 0 should raise C_E |
begin |
TCTouch.Assert( TL(Report.Ident_Int(0)).Data_Item = "*****", |
"Index 0 (illegal); bad data" ); |
Report.Failed("Index 0 did not raise Constraint_Error"); |
exception |
when Constraint_Error => |
null; -- expected case |
when others => |
Report.Failed("Wrong exception in Check_Under_Index "); |
end Check_Under_Index; |
|
Check_Over_Index: -- index 11 should raise C_E |
begin |
TCTouch.Assert( TL(Report.Ident_Int(11)).Data_Item = "*****", |
"Index 11 (illegal); bad data" ); |
Report.Failed("Index 11 did not raise Constraint_Error"); |
exception |
when Constraint_Error => |
null; -- expected case |
when others => |
Report.Failed("Wrong exception in Check_Over_Index "); |
end Check_Over_Index; |
|
end Check_Tag_Slice; |
|
procedure Check_Out_Tagged_Data( Formal : out Tagged_Data ) is |
begin |
TCTouch.Assert( Formal.Data_Item = "*****", "out formal data bad" ); |
Formal.Data_Item(1) := '!'; |
end Check_Out_Tagged_Data; |
|
end C641001_0; |
|
------------------------------------------------------------------- C641001 |
|
with Report; |
with TCTouch; |
with C641001_0; |
procedure C641001 is |
|
function II( I: Integer ) return Integer renames Report.Ident_Int; |
-- ^^ name chosen to allow embedding in calls |
|
A_String_10 : C641001_0.String_10; |
Slicable : String(1..40); |
Tag_Slices : C641001_0.Tag_List(0..11); |
|
Global_Data : String(1..26) := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
|
procedure Check_Out_Sliding( Lo1, Hi1, Lo2, Hi2 : Natural ) is |
|
subtype One_Constrained_String is String(Lo1..Hi1); -- 1 5 |
subtype Two_Constrained_String is String(Lo2..Hi2); -- 6 10 |
|
procedure Out_Param( Param : out One_Constrained_String ) is |
begin |
Param := Report.Ident_Str( Global_Data(Lo2..Hi2) ); |
end Out_Param; |
Object : Two_Constrained_String; |
begin |
Out_Param( Object ); |
if Object /= Report.Ident_Str( Global_Data(Lo2..Hi2) ) then |
Report.Failed("Bad result in Check_Out_Sliding"); |
end if; |
exception |
when others => Report.Failed("Exception in Check_Out_Sliding"); |
end Check_Out_Sliding; |
|
procedure Check_Dynamic_Subtype_Cases(F_Lower,F_Upper: Natural; |
A_Lower,A_Upper: Natural) is |
|
subtype Dyn_String is String(F_Lower..F_Upper); |
|
procedure Check_Dyn_Subtype_Formal_Out( Param : out Dyn_String ) is |
begin |
Param := Global_Data(11..20); |
end Check_Dyn_Subtype_Formal_Out; |
|
procedure Check_Dyn_Subtype_Formal_In( Param : in Dyn_String ) is |
begin |
if Param /= Global_Data(11..20) then |
Report.Failed("Dynamic case, data mismatch"); |
end if; |
end Check_Dyn_Subtype_Formal_In; |
|
Stuff: String(A_Lower..A_Upper); |
|
begin |
Check_Dyn_Subtype_Formal_Out( Stuff ); |
Check_Dyn_Subtype_Formal_In( Stuff ); |
end Check_Dynamic_Subtype_Cases; |
|
begin -- Main test procedure. |
|
Report.Test ("C641001", "Check that actual parameters passed by " & |
"reference are view converted to the nominal " & |
"subtype of the formal parameter" ); |
|
-- non error cases for string slices |
|
C641001_0.Check_String_10( A_String_10, 1, 10 ); |
TCTouch.Assert( A_String_10 = "1234567890", "Nominal case" ); |
|
C641001_0.Check_String_10( A_String_10, 11, 20 ); |
TCTouch.Assert( A_String_10 = "ABCDEFGHIJ", "Sliding to subtype" ); |
|
C641001_0.Check_String_10( Slicable(1..10), 1, 10 ); |
TCTouch.Assert( Slicable(1..10) = "1234567890", "Slice, no sliding" ); |
|
C641001_0.Check_String_10( Slicable(1..10), 21, 30 ); |
TCTouch.Assert( Slicable(1..10) = "KLMNOPQRST", "Sliding to slice" ); |
|
C641001_0.Check_String_10( Slicable(11..20), 11, 20 ); |
TCTouch.Assert( Slicable(11..20) = "ABCDEFGHIJ", "Sliding to same" ); |
|
C641001_0.Check_String_10( Slicable(21..30), 11, 20 ); |
TCTouch.Assert( Slicable(21..30) = "ABCDEFGHIJ", "Sliding up" ); |
|
-- error cases for string slices |
|
C641001_0.Check_Illegal_Slice_Reference( Slicable(21..30), 20 ); |
|
C641001_0.Check_Illegal_Slice_Reference( Slicable(1..15), Slicable'Last ); |
|
-- checks for view converting actuals to formals |
|
-- catch low bound fault |
C641001_0.Check_Tag_Slice( Tag_Slices(II(0)..9) ); -- II ::= Ident_Int |
TCTouch.Assert( Tag_Slices'First = 0, "Tag_Slices'First = 0" ); |
TCTouch.Assert( Tag_Slices'Last = 11, "Tag_Slices'Last = 11" ); |
|
-- catch high bound fault |
C641001_0.Check_Tag_Slice( Tag_Slices(2..II(11)) ); |
TCTouch.Assert( Tag_Slices'First = 0, "Tag_Slices'First = 0" ); |
TCTouch.Assert( Tag_Slices'Last = 11, "Tag_Slices'Last = 11" ); |
|
Check_Formal_Association_Check: |
begin |
C641001_0.Check_String_10( Slicable, 1, 10 ); -- catch length fault |
Report.Failed("Exception not raised at Check_Formal_Association_Check"); |
exception |
when Constraint_Error => |
null; -- expected case |
when others => |
Report.Failed("Wrong exception at Check_Formal_Association_Check"); |
end Check_Formal_Association_Check; |
|
-- check for constrained actual, unconstrained formal |
C641001_0.Check_Out_Tagged_Data( Tag_Slices(5) ); |
TCTouch.Assert( Tag_Slices(5).Data_Item = "!****", |
"formal out returned bad result" ); |
|
-- additional checks for out mode formal parameters, dynamic subtypes |
|
Check_Out_Sliding( II(1),II(5), II(6),II(10) ); |
|
Check_Out_Sliding( 21,25, 6,10 ); |
|
Check_Dynamic_Subtype_Cases(F_Lower => II(1), F_Upper => II(10), |
A_Lower => II(1), A_Upper => II(10)); |
|
Check_Dynamic_Subtype_Cases(F_Lower => II(21), F_Upper => II(30), |
A_Lower => II( 1), A_Upper => II(10)); |
|
Check_Dynamic_Subtype_Cases(F_Lower => II( 1), F_Upper => II(10), |
A_Lower => II(21), A_Upper => II(30)); |
|
Report.Result; |
|
end C641001; |
/c64104i.ada
0,0 → 1,101
-- C64104I.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 UNDER THE APPROPRIATE |
-- CIRCUMSTANCES FOR ACCESS PARAMETERS, NAMELY WHEN THE |
-- ACTUAL INDEX BOUNDS OR DISCRIMINANTS ARE NOT EQUAL |
-- TO THE FORMAL CONSTRAINTS BEFORE THE CALL (FOR IN AND IN OUT |
-- MODES), AND WHEN THE FORMAL CONSTRAINTS ARE NOT EQUAL TO THE |
-- ACTUAL CONSTRAINTS UPON RETURN (FOR IN OUT AND OUT MODES). |
|
-- (F) AFTER RETURN, IN OUT MODE, DYNAMIC THREE DIMENSIONAL |
-- BOUNDS. |
|
-- HISTORY: |
-- JRK 03/18/81 CREATED ORIGINAL TEST. |
-- NL 10/13/81 |
-- LB 11/25/86 ADDED CODE TO ENSURE THAT SUBPROGRAMS ARE |
-- ACTUALLY BEING CALLED. |
-- BCB 11/12/87 CHANGED HEADER TO STANDARD FORMAT. |
|
|
WITH REPORT; |
PROCEDURE C64104I IS |
|
USE REPORT; |
|
BEGIN |
TEST ("C64104I", "CHECK THAT CONSTRAINT_ERROR IS RAISED " & |
"APPROPRIATELY FOR ACCESS PARAMETERS"); |
|
-------------------------------------------------- |
|
DECLARE |
|
CALLED : BOOLEAN; |
|
TYPE E IS (E1, E2, E3); |
|
TYPE T IS ARRAY (CHARACTER RANGE <>, |
E RANGE <>, |
BOOLEAN RANGE <> |
) OF INTEGER; |
|
TYPE A IS ACCESS T; |
|
V : A ('A'..'Z', E1..E2, BOOLEAN) := |
NEW T ('A'..'Z', E1..E2, BOOLEAN); |
|
PROCEDURE P (X : IN OUT A) IS |
BEGIN |
CALLED := TRUE; |
IF EQUAL (3,3) THEN |
X := NEW T ('A'..'Z', E2..E3, BOOLEAN); |
END IF; |
EXCEPTION |
WHEN OTHERS => |
FAILED ("EXCEPTION RAISED IN PROCEDURE"); |
END P; |
|
BEGIN |
|
CALLED := FALSE; |
P (V); |
FAILED ("EXCEPTION NOT RAISED AFTER RETURN"); |
|
EXCEPTION |
WHEN CONSTRAINT_ERROR => |
IF NOT CALLED THEN |
FAILED ("SUBPROGRAM P WAS NOT CALLED"); |
END IF; |
WHEN OTHERS => |
FAILED ("WRONG EXCEPTION RAISED"); |
END; |
|
-------------------------------------------------- |
|
RESULT; |
|
END C64104I; |