summaryrefslogtreecommitdiff
path: root/gcc/testsuite/ada/acats/tests/cc/cc1225a.tst
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /gcc/testsuite/ada/acats/tests/cc/cc1225a.tst
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'gcc/testsuite/ada/acats/tests/cc/cc1225a.tst')
-rw-r--r--gcc/testsuite/ada/acats/tests/cc/cc1225a.tst350
1 files changed, 350 insertions, 0 deletions
diff --git a/gcc/testsuite/ada/acats/tests/cc/cc1225a.tst b/gcc/testsuite/ada/acats/tests/cc/cc1225a.tst
new file mode 100644
index 000000000..dfad3b0ed
--- /dev/null
+++ b/gcc/testsuite/ada/acats/tests/cc/cc1225a.tst
@@ -0,0 +1,350 @@
+-- CC1225A.TST
+
+-- 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, FOR A FORMAL ACCESS TYPE, THAT ALL ALLOWABLE OPERATIONS
+-- ARE IMPLICITLY DECLARED.
+
+-- MACRO SUBSTITUTION:
+-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR
+-- THE ACTIVATION OF A TASK.
+
+-- HISTORY:
+-- BCB 03/29/88 CREATED ORIGINAL TEST.
+-- RDH 04/09/90 ADDED 'STORAGE_SIZE CLAUSES. CHANGED EXTENSION TO
+-- 'TST'.
+-- LDC 09/26/90 REMOVED 'USE PACK' AFTER THE WITH SINCE IT ISN'T
+-- NEEDED, ADDED CHECK FOR NULL AFTER ASSIGMENT TO
+-- NULL, ADDED CHECKS FOR OTHER RELATION OPERATORS,
+-- CHANGED CHECK FOR 'ADDRESS TO A PROCEDURE CALL.
+-- LDC 10/13/90 CHANGED CHECK FOR 'SIZE TO ONLY CHECK FOR
+-- AVAILABILITY. CHANGED CHECK FOR 'ADDRESS TO A
+-- MEMBERSHIP TEST.
+-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
+
+WITH REPORT; USE REPORT;
+WITH SYSTEM; USE SYSTEM;
+
+PROCEDURE CC1225A IS
+
+ TASK_STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE;
+
+ TYPE AI IS ACCESS INTEGER;
+
+ TYPE ACCINTEGER IS ACCESS INTEGER;
+
+ TYPE REC IS RECORD
+ COMP : INTEGER;
+ END RECORD;
+
+ TYPE DISCREC (DISC : INTEGER := 1) IS RECORD
+ COMPD : INTEGER;
+ END RECORD;
+
+ TYPE AREC IS ACCESS REC;
+
+ TYPE ADISCREC IS ACCESS DISCREC;
+
+ TYPE ARR IS ARRAY(1..2,1..2) OF INTEGER;
+
+ TYPE ONEDIM IS ARRAY(1..10) OF INTEGER;
+
+ TYPE AA IS ACCESS ARR;
+
+ TYPE AONEDIM IS ACCESS ONEDIM;
+
+ TYPE ENUM IS (ONE, TWO, THREE);
+
+ TASK TYPE T IS
+ ENTRY HERE(VAL : IN OUT INTEGER);
+ END T;
+
+ TYPE ATASK IS ACCESS T;
+
+ TYPE ANOTHERTASK IS ACCESS T;
+ FOR ANOTHERTASK'STORAGE_SIZE USE 2 * TASK_STORAGE_SIZE;
+
+ TASK TYPE T1 IS
+ ENTRY HERE1(ENUM)(VAL1 : IN OUT INTEGER);
+ END T1;
+
+ TYPE ATASK1 IS ACCESS T1;
+
+ TASK BODY T IS
+ BEGIN
+ ACCEPT HERE(VAL : IN OUT INTEGER) DO
+ VAL := VAL * 2;
+ END HERE;
+ END T;
+
+ TASK BODY T1 IS
+ BEGIN
+ SELECT
+ ACCEPT HERE1(ONE)(VAL1 : IN OUT INTEGER) DO
+ VAL1 := VAL1 * 1;
+ END HERE1;
+ OR
+ ACCEPT HERE1(TWO)(VAL1 : IN OUT INTEGER) DO
+ VAL1 := VAL1 * 2;
+ END HERE1;
+ OR
+ ACCEPT HERE1(THREE)(VAL1 : IN OUT INTEGER) DO
+ VAL1 := VAL1 * 3;
+ END HERE1;
+ END SELECT;
+ END T1;
+
+ GENERIC
+ TYPE FORM IS (<>);
+ TYPE ACCFORM IS ACCESS FORM;
+ TYPE ACC IS ACCESS INTEGER;
+ TYPE ACCREC IS ACCESS REC;
+ TYPE ACCDISCREC IS ACCESS DISCREC;
+ TYPE ACCARR IS ACCESS ARR;
+ TYPE ACCONE IS ACCESS ONEDIM;
+ TYPE ACCTASK IS ACCESS T;
+ TYPE ACCTASK1 IS ACCESS T1;
+ TYPE ANOTHERTASK1 IS ACCESS T;
+ PACKAGE P IS
+ END P;
+
+ PACKAGE BODY P IS
+ AF : ACCFORM;
+ TYPE DER_ACC IS NEW ACC;
+ A, B : ACC;
+ DERA : DER_ACC;
+ R : ACCREC;
+ DR : ACCDISCREC;
+ C : ACCARR;
+ D, E : ACCONE;
+ F : ACCTASK;
+ G : ACCTASK1;
+ INT : INTEGER := 5;
+
+ BEGIN
+ TEST ("CC1225A", "CHECK, FOR A FORMAL ACCESS TYPE, THAT " &
+ "ALL ALLOWABLE OPERATIONS ARE IMPLICITLY " &
+ "DECLARED");
+
+ IF AF'ADDRESS NOT IN ADDRESS THEN
+ FAILED ("IMPROPER RESULT FROM AF'ADDRESS TEST");
+ END IF;
+
+ DECLARE
+ AF_SIZE : INTEGER := ACCFORM'SIZE;
+ BEGIN
+ IF AF_SIZE NOT IN INTEGER THEN
+ FAILED ("IMPROPER RESULT FROM AF'SIZE");
+ END IF;
+ END;
+
+ IF ANOTHERTASK1'STORAGE_SIZE < TASK_STORAGE_SIZE THEN
+ FAILED ("IMPROPER VALUE FOR ANOTHERTASK1'STORAGE_SIZE");
+ END IF;
+
+ B := NEW INTEGER'(25);
+
+ A := B;
+
+ IF A.ALL /= 25 THEN
+ FAILED ("IMPROPER VALUE FOR ASSIGNMENT OF VARIABLE " &
+ "OF A FORMAL ACCESS TYPE FROM ANOTHER " &
+ "VARIABLE OF A FORMAL ACCESS TYPE");
+ END IF;
+
+ A := NEW INTEGER'(10);
+
+ IF A.ALL /= 10 THEN
+ FAILED ("IMPROPER VALUE FOR VARIABLE OF FORMAL ACCESS " &
+ "TYPE");
+ END IF;
+
+ IF A NOT IN ACC THEN
+ FAILED ("IMPROPER RESULT FROM MEMBERSHIP TEST");
+ END IF;
+
+ B := ACC'(A);
+
+ IF B.ALL /= 10 THEN
+ FAILED ("IMPROPER VALUE FROM QUALIFICATION");
+ END IF;
+
+ DERA := NEW INTEGER'(10);
+ A := ACC(DERA);
+
+ IF A.ALL /= IDENT_INT(10) THEN
+ FAILED ("IMPROPER VALUE FROM EXPLICIT CONVERSION");
+ END IF;
+
+ IF A.ALL > IDENT_INT(10) THEN
+ FAILED ("IMPROPER VALUE USED IN LESS THAN");
+ END IF;
+
+ IF A.ALL < IDENT_INT(10) THEN
+ FAILED ("IMPROPER VALUE USED IN GREATER THAN");
+ END IF;
+
+ IF A.ALL >= IDENT_INT(11) THEN
+ FAILED ("IMPROPER VALUE USED IN LESS THAN OR EQUAL");
+ END IF;
+
+ IF A.ALL <= IDENT_INT(9) THEN
+ FAILED ("IMPROPER VALUE USED IN GREATER THAN OR EQUAL");
+ END IF;
+
+ IF NOT (A.ALL + A.ALL = IDENT_INT(20)) THEN
+ FAILED ("IMPROPER VALUE FROM ADDITION");
+ END IF;
+
+ IF NOT (A.ALL - IDENT_INT(2) = IDENT_INT(8)) THEN
+ FAILED ("IMPROPER VALUE FROM SUBTRACTION");
+ END IF;
+
+ IF NOT (A.ALL * IDENT_INT(3) = IDENT_INT(30)) THEN
+ FAILED ("IMPROPER VALUE FROM MULTIPLICATION");
+ END IF;
+
+ IF NOT (A.ALL / IDENT_INT(3) = IDENT_INT(3)) THEN
+ FAILED ("IMPROPER VALUE FROM DIVISION");
+ END IF;
+
+ IF NOT (A.ALL MOD IDENT_INT(3) = IDENT_INT(1)) THEN
+ FAILED ("IMPROPER VALUE FROM MODULO");
+ END IF;
+
+ IF NOT (A.ALL REM IDENT_INT(7) = IDENT_INT(3)) THEN
+ FAILED ("IMPROPER VALUE FROM REMAINDER");
+ END IF;
+
+ IF NOT (A.ALL ** IDENT_INT(2) = IDENT_INT(100)) THEN
+ FAILED ("IMPROPER VALUE FROM EXPONENTIATION");
+ END IF;
+
+ IF NOT (+A.ALL = IDENT_INT(10)) THEN
+ FAILED ("IMPROPER VALUE FROM IDENTITY");
+ END IF;
+
+ IF NOT (-A.ALL = IDENT_INT(-10)) THEN
+ FAILED ("IMPROPER VALUE FROM NEGATION");
+ END IF;
+
+ A := NULL;
+
+ IF A /= NULL THEN
+ FAILED ("IMPROPER VALUE FROM ACCESS SET TO NULL");
+ END IF;
+
+ IF A'ADDRESS NOT IN ADDRESS THEN
+ FAILED ("IMPROPER RESULT FROM A'ADDRESS TEST");
+ END IF;
+
+
+ DECLARE
+ ACC_SIZE : INTEGER := ACC'SIZE;
+ BEGIN
+ IF ACC_SIZE NOT IN INTEGER THEN
+ FAILED ("IMPROPER RESULT FROM ACC'SIZE");
+ END IF;
+ END;
+
+ R := NEW REC'(COMP => 5);
+
+ IF NOT EQUAL(R.COMP,5) THEN
+ FAILED ("IMPROPER VALUE FOR RECORD COMPONENT");
+ END IF;
+
+ DR := NEW DISCREC'(DISC => 1, COMPD => 5);
+
+ IF NOT EQUAL(DR.DISC,1) OR NOT EQUAL(DR.COMPD,5) THEN
+ FAILED ("IMPROPER VALUES FOR DISCRIMINATED RECORD " &
+ "COMPONENTS");
+ END IF;
+
+ C := NEW ARR'(1 => (1,2), 2 => (3,4));
+
+ IF C(1,1) /= 1 OR C(1,2) /= 2 OR C(2,1) /= 3 OR C(2,2) /= 4
+ THEN FAILED ("IMPROPER ARRAY COMPONENT VALUES");
+ END IF;
+
+ D := NEW ONEDIM'(1,2,3,4,5,6,7,8,9,10);
+ E := NEW ONEDIM'(10,9,8,7,6,5,4,3,2,1);
+
+ D(1..5) := E(1..5);
+
+ IF D(1) /= 10 OR D(2) /= 9 OR D(3) /= 8
+ OR D(4) /= 7 OR D(5) /= 6 THEN
+ FAILED ("IMPROPER RESULTS FROM SLICE ASSIGNMENT");
+ END IF;
+
+ IF C'FIRST /= 1 OR C'FIRST(2) /= 1 THEN
+ FAILED ("IMPROPER LOWER BOUNDS FOR CONSTRAINED ARRAY");
+ END IF;
+
+ IF C'LAST /= 2 OR C'LAST(2) /= 2 THEN
+ FAILED ("IMPROPER UPPER BOUNDS FOR CONSTRAINED ARRAY");
+ END IF;
+
+ IF 1 NOT IN C'RANGE THEN
+ FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 1");
+ END IF;
+
+ IF 1 NOT IN C'RANGE(2) THEN
+ FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 2");
+ END IF;
+
+ IF C'LENGTH /= 2 THEN
+ FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
+ "ARRAY - 1");
+ END IF;
+
+ IF C'LENGTH(2) /= 2 THEN
+ FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
+ "ARRAY - 2");
+ END IF;
+
+ F := NEW T;
+
+ F.HERE(INT);
+
+ IF NOT EQUAL(INT,IDENT_INT(10)) THEN
+ FAILED ("IMPROPER RESULTS FROM ENTRY SELECTION");
+ END IF;
+
+ G := NEW T1;
+
+ G.HERE1(TWO)(INT);
+
+ IF NOT EQUAL(INT,IDENT_INT(20)) THEN
+ FAILED ("IMPROPER RESULTS FROM FAMILY ENTRY SELECTION");
+ END IF;
+
+ RESULT;
+ END P;
+
+ PACKAGE PACK IS NEW P(INTEGER,ACCINTEGER,AI,AREC,ADISCREC,
+ AA,AONEDIM,ATASK,ATASK1,ANOTHERTASK);
+
+BEGIN
+ NULL;
+END CC1225A;