3 -- Grant of Unlimited Rights
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7 -- unlimited rights in the software and documentation contained herein.
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
9 -- this public release, the Government intends to confer upon all
10 -- recipients unlimited rights equal to those held by the Government.
11 -- These rights include rights to use, duplicate, release or disclose the
12 -- released technical data and computer software in whole or in part, in
13 -- any manner and for any purpose whatsoever, and to have or permit others
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
25 -- CHECK THAT THE APPROPRIATE EXCEPTION IS RAISED FOR TYPE CONVERSIONS
26 -- ON OUT ARRAY PARAMETERS. IN PARTICULAR:
27 -- (A) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN THE ACTUAL
28 -- COMPONENT'S CONSTRAINTS DIFFER FROM THE FORMAL COMPONENT'S
30 -- (B) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO
31 -- AN UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE
32 -- OUTSIDE OF A FORMAL INDEX SUBTYPE.
33 -- (C) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL FOR CONVERSION TO A
34 -- CONSTRAINED ARRAY TYPE WHEN THE NUMBER OF COMPONENTS PER
35 -- DIMENSION OF THE ACTUAL DIFFERS FROM THAT OF THE FORMAL.
36 -- (D) CONSTRAINT_ERROR IS RAISED BEFORE THE CALL WHEN CONVERSION TO AN
37 -- UNCONSTRAINED ARRAY TYPE CAUSES AN ACTUAL INDEX BOUND TO LIE
38 -- OUTSIDE OF THE BASE INDEX TYPE OF THE FORMAL.
40 -- *** NOTE: This test has been modified since ACVC version 1.11 to -- 9X
41 -- *** remove incompatibilities associated with the transition -- 9X
42 -- *** to Ada 9X. -- 9X
46 -- EG 10/29/85 FIX NUMERIC_ERROR/CONSTRAINT_ERROR ACCORDING TO
48 -- MRM 03/30/93 REMOVED NUMERIC_ERROR FOR 9X COMPATIBILITY
49 -- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
52 WITH REPORT
; USE REPORT
;
56 TEST
("C64103D", "CHECK THAT APPROPRIATE EXCEPTION IS RAISED ON " &
57 "TYPE CONVERSIONS OF OUT ARRAY PARAMETERS");
59 -----------------------------------------------
65 TYPE SUBINT
IS RANGE 0..8;
66 TYPE ARRAY_TYPE
IS ARRAY (SUBINT
RANGE <>) OF BOOLEAN;
67 A0
: ARRAY_TYPE
(0..3) := (0..3 => TRUE);
69 PROCEDURE P2
(X
: OUT ARRAY_TYPE
) IS
74 P2
(ARRAY_TYPE
(A0
)); -- OK.
77 FAILED
("EXCEPTION RAISED -P2 (A)");
82 -----------------------------------------------
86 TYPE SUBINT
IS RANGE 0..8;
87 TYPE ARRAY_TYPE
IS ARRAY (SUBINT
RANGE <>) OF BOOLEAN;
88 TYPE AR1
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
89 A1
: AR1
(-1..7) := (-1..7 => TRUE);
90 A2
: AR1
(1..9) := (1..9 => TRUE);
92 PROCEDURE P1
(X
: OUT ARRAY_TYPE
) IS
94 FAILED
("EXCEPTION NOT RAISED BEFORE CALL -P1 (B)");
100 COMMENT
("CALL TO P1 (B) ON A1");
101 P1
(ARRAY_TYPE
(A1
));
103 WHEN CONSTRAINT_ERROR
=>
106 FAILED
("WRONG EXCEPTION RAISED -P1 (B)");
110 COMMENT
("CALL TO P1 (B) ON A2");
111 P1
(ARRAY_TYPE
(A2
));
113 WHEN CONSTRAINT_ERROR
=>
116 FAILED
("WRONG EXCEPTION RAISED -P1 (B)");
121 -----------------------------------------------
127 TYPE INDEX1
IS RANGE 1..3;
128 TYPE INDEX2
IS RANGE 1..4;
129 TYPE AR_TYPE
IS ARRAY (INDEX1
, INDEX2
) OF BOOLEAN;
130 A0
: AR_TYPE
:= (1..3 => (1..4 => FALSE));
132 TYPE I1
IS RANGE 1..4;
133 TYPE I2
IS RANGE 1..3;
134 TYPE ARRAY_TYPE
IS ARRAY (I1
, I2
) OF BOOLEAN;
136 PROCEDURE P1
(X
: OUT ARRAY_TYPE
) IS
138 FAILED
("EXCEPTION NOT RAISED BEFORE CALL -P1 (C)");
141 P1
(ARRAY_TYPE
(A0
));
143 WHEN CONSTRAINT_ERROR
=>
146 FAILED
("WRONG EXCEPTION RAISED -P1 (C)");
151 -----------------------------------------------
157 TYPE SM_INT
IS RANGE 0..2;
158 TYPE LG_INT
IS RANGE SYSTEM
.MIN_INT
..SYSTEM
.MAX_INT
;
159 TYPE AR_SMALL
IS ARRAY (SM_INT
RANGE <>) OF BOOLEAN;
160 TYPE AR_LARGE
IS ARRAY (LG_INT
RANGE <>) OF BOOLEAN;
161 A0
: AR_LARGE
(SYSTEM
.MAX_INT
- 2..SYSTEM
.MAX_INT
) :=
162 (SYSTEM
.MAX_INT
- 2..SYSTEM
.MAX_INT
=> TRUE);
164 PROCEDURE P1
(X
: OUT AR_SMALL
) IS
166 FAILED
("EXCEPTION NOT RAISED BEFORE CALL -P1 (D)");
169 IF LG_INT
(SM_INT
'BASE'LAST) < LG_INT'BASE'LAST
THEN
172 COMMENT
("NOT APPLICABLE -P1 (D)");
175 WHEN CONSTRAINT_ERROR
=>
176 COMMENT
("CONSTRAINT_ERROR RAISED - P1 (D)");
178 FAILED
("WRONG EXCEPTION RAISED - P1 (D)");
183 -----------------------------------------------