aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada')
-rw-r--r--gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada267
1 files changed, 267 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada b/gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada
new file mode 100644
index 000000000..47dd6b770
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/ada/acats/tests/a/ad7203b.ada
@@ -0,0 +1,267 @@
+-- AD7203B.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 THE PREFIX OF THE 'SIZE' ATTRIBUTE CAN BE AN OBJECT,
+-- A TYPE, OR A SUBTYPE.
+
+-- HISTORY:
+-- BCB 09/27/88 CREATED ORIGINAL TEST BY MODIFYING AND RENAMING
+-- CD7203B.ADA.
+
+WITH SYSTEM;
+WITH REPORT; USE REPORT;
+PROCEDURE AD7203B IS
+
+ TYPE I_REC IS
+ RECORD
+ I1, I2 : INTEGER;
+ END RECORD;
+
+ I : INTEGER;
+ I_A : ARRAY (1 ..5) OF INTEGER;
+ I_R : I_REC;
+
+ I_SIZE : INTEGER := I'SIZE;
+ I_A_SIZE : INTEGER := I_A'SIZE;
+ I_R_SIZE : INTEGER := I_R'SIZE;
+ I_A_1_SIZE : INTEGER := I_A(1)'SIZE;
+ I_R_I1_SIZE : INTEGER := I_R.I1'SIZE;
+
+ TYPE FIXED IS DELTA 0.01 RANGE -1.0 .. 1.0;
+ TYPE FXD_REC IS
+ RECORD
+ FXD1, FXD2 : FIXED;
+ END RECORD;
+
+ FXD : FIXED;
+ FXD_A : ARRAY (1 .. 5) OF FIXED;
+ FXD_R : FXD_REC;
+
+ FXD_SIZE : INTEGER := FXD'SIZE;
+ FXD_A_SIZE : INTEGER := FXD_A'SIZE;
+ FXD_R_SIZE : INTEGER := FXD_R'SIZE;
+ FXD_A_1_SIZE : INTEGER := FXD_A(1)'SIZE;
+ FXD_R_FXD1_SIZE : INTEGER := FXD_R.FXD1'SIZE;
+
+ TYPE FLT_REC IS
+ RECORD
+ FLT1, FLT2 : FLOAT;
+ END RECORD;
+
+ FLT : FLOAT;
+ FLT_A : ARRAY (1 .. 5) OF FLOAT;
+ FLT_R : FLT_REC;
+
+ FLT_SIZE : INTEGER := FLT'SIZE;
+ FLT_A_SIZE : INTEGER := FLT_A'SIZE;
+ FLT_R_SIZE : INTEGER := FLT_R'SIZE;
+ FLT_A_1_SIZE : INTEGER := FLT_A(1)'SIZE;
+ FLT_R_FLT1_SIZE : INTEGER := FLT_R.FLT1'SIZE;
+
+ SUBTYPE TINY_INT IS INTEGER RANGE 0 .. 255;
+ TYPE TI_REC IS
+ RECORD
+ TI1, TI2 : TINY_INT;
+ END RECORD;
+
+ TI : TINY_INT;
+ TI_A : ARRAY (1 .. 5) OF TINY_INT;
+ TI_R : TI_REC;
+
+ TINY_INT_SIZE : INTEGER := TINY_INT'SIZE;
+ TI_SIZE : INTEGER := TI'SIZE;
+ TI_A_SIZE : INTEGER := TI_A'SIZE;
+ TI_R_SIZE : INTEGER := TI_R'SIZE;
+ TI_A_1_SIZE : INTEGER := TI_A(1)'SIZE;
+ TI_R_TI1_SIZE : INTEGER := TI_R.TI1'SIZE;
+
+ TYPE STR IS ARRAY (TINY_INT RANGE <>) OF CHARACTER;
+ TYPE STR_2 IS ARRAY (1 .. 127) OF CHARACTER;
+ TYPE STR_REC IS
+ RECORD
+ S1, S2 : STR (TINY_INT'FIRST .. TINY_INT'LAST);
+ END RECORD;
+
+ S : STR (TINY_INT'FIRST .. TINY_INT'LAST);
+ S_A : ARRAY (1 .. 5) OF STR (TINY_INT'FIRST .. TINY_INT'LAST);
+ S_R : STR_REC;
+
+ STR_2_SIZE : INTEGER := STR_2'SIZE;
+ S_SIZE : INTEGER := S'SIZE;
+ S_A_SIZE : INTEGER := S_A'SIZE;
+ S_R_SIZE : INTEGER := S_R'SIZE;
+ S_A_1_SIZE : INTEGER := S_A(1)'SIZE;
+ S_R_S1_SIZE : INTEGER := S_R.S1'SIZE;
+
+ TYPE C_REC IS
+ RECORD
+ C1, C2 : CHARACTER;
+ END RECORD;
+
+ C : CHARACTER;
+ C_A : ARRAY (1 .. 5) OF CHARACTER;
+ C_R : C_REC;
+
+ C_SIZE : INTEGER := C'SIZE;
+ C_A_SIZE : INTEGER := C_A'SIZE;
+ C_R_SIZE : INTEGER := C_R'SIZE;
+ C_A_1_SIZE : INTEGER := C_A(1)'SIZE;
+ C_R_C1_SIZE : INTEGER := C_R.C1'SIZE;
+
+ TYPE B_REC IS
+ RECORD
+ B1, B2 : BOOLEAN;
+ END RECORD;
+
+ B : BOOLEAN;
+ B_A : ARRAY (1 .. 5) OF BOOLEAN;
+ B_R : B_REC;
+
+ B_SIZE : INTEGER := B'SIZE;
+ B_A_SIZE : INTEGER := B_A'SIZE;
+ B_R_SIZE : INTEGER := B_R'SIZE;
+ B_A_1_SIZE : INTEGER := B_A(1)'SIZE;
+ B_R_B1_SIZE : INTEGER := B_R.B1'SIZE;
+
+ TYPE DISCR IS RANGE 1 .. 2;
+ TYPE DISCR_REC (D : DISCR := 1) IS
+ RECORD
+ CASE D IS
+ WHEN 1 =>
+ C1_I : INTEGER;
+ WHEN 2 =>
+ C2_I1 : INTEGER;
+ C2_I2 : INTEGER;
+ END CASE;
+ END RECORD;
+
+ DR_UC : DISCR_REC;
+ DR_C : DISCR_REC (2);
+ DR_A : ARRAY (1 .. 5) OF DISCR_REC;
+
+ DR_UC_SIZE : INTEGER := DR_UC'SIZE;
+ DR_C_SIZE : INTEGER := DR_C'SIZE;
+ DR_A_SIZE : INTEGER := DR_A'SIZE;
+ DR_UC_C1_I_SIZE : INTEGER := DR_UC.C1_I'SIZE;
+ DR_A_1_SIZE : INTEGER := DR_A(1)'SIZE;
+
+ TYPE ENUM IS (E1, E2, E3, E4);
+ TYPE ENUM_REC IS
+ RECORD
+ E1, E2 : ENUM;
+ END RECORD;
+
+ E : ENUM;
+ E_A : ARRAY (1 .. 5) OF ENUM;
+ E_R : ENUM_REC;
+
+ E_SIZE : INTEGER := E'SIZE;
+ E_A_SIZE : INTEGER := E_A'SIZE;
+ E_R_SIZE : INTEGER := E_R'SIZE;
+ E_A_1_SIZE : INTEGER := E_A(1)'SIZE;
+ E_R_E1_SIZE : INTEGER := E_R.E1'SIZE;
+
+ TASK TYPE TSK IS END TSK;
+ TYPE TSK_REC IS
+ RECORD
+ TSK1, TSK2 : TSK;
+ END RECORD;
+
+ T : TSK;
+ T_A : ARRAY (1 .. 5) OF TSK;
+ T_R : TSK_REC;
+
+ T_SIZE : INTEGER := T'SIZE;
+ T_A_SIZE : INTEGER := T_A'SIZE;
+ T_R_SIZE : INTEGER := T_R'SIZE;
+ T_A_1_SIZE : INTEGER := T_A(1)'SIZE;
+ T_R_TSK1_SIZE : INTEGER := T_R.TSK1'SIZE;
+
+ TYPE ACC IS ACCESS INTEGER;
+ TYPE ACC_REC IS
+ RECORD
+ A1, A2 : ACC;
+ END RECORD;
+
+ A : ACC;
+ A_A : ARRAY (1 .. 5) OF ACC;
+ A_R : ACC_REC;
+
+ A_SIZE : INTEGER := A'SIZE;
+ A_A_SIZE : INTEGER := A_A'SIZE;
+ A_R_SIZE : INTEGER := A_R'SIZE;
+ A_A_1_SIZE : INTEGER := A_A(1)'SIZE;
+ A_R_A1_SIZE : INTEGER := A_R.A1'SIZE;
+
+ PACKAGE PK IS
+ TYPE PRV IS PRIVATE;
+ TYPE PRV_REC IS
+ RECORD
+ P1, P2 : PRV;
+ END RECORD;
+
+ TYPE LPRV IS LIMITED PRIVATE;
+ TYPE LPRV_REC IS
+ RECORD
+ LP1, LP2 : LPRV;
+ END RECORD;
+ PRIVATE
+ TYPE PRV IS NEW INTEGER;
+
+ TYPE LPRV IS NEW INTEGER;
+ END PK;
+ USE PK;
+
+ P : PRV;
+ P_A : ARRAY (1 .. 5) OF PRV;
+ P_R : PRV_REC;
+
+ P_SIZE : INTEGER := P'SIZE;
+ P_A_SIZE : INTEGER := P_A'SIZE;
+ P_R_SIZE : INTEGER := P_R'SIZE;
+ P_A_1_SIZE : INTEGER := P_A(1)'SIZE;
+ P_R_P1_SIZE : INTEGER := P_R.P1'SIZE;
+
+ LP : LPRV;
+ LP_A : ARRAY (1 .. 5) OF LPRV;
+ LP_R : LPRV_REC;
+
+ LP_SIZE : INTEGER := LP'SIZE;
+ LP_A_SIZE : INTEGER := LP_A'SIZE;
+ LP_R_SIZE : INTEGER := LP_R'SIZE;
+ LP_A_1_SIZE : INTEGER := LP_A(1)'SIZE;
+ LP_R_LP1_SIZE : INTEGER := LP_R.LP1'SIZE;
+
+ TASK BODY TSK IS
+ BEGIN
+ NULL;
+ END TSK;
+
+BEGIN
+ TEST ("AD7203B", "CHECK THAT THE PREFIX OF THE 'SIZE' ATTRIBUTE " &
+ "CAN BE AN OBJECT, A TYPE, OR A SUBTYPE");
+
+ RESULT;
+END AD7203B;