c48009g.ada
来自「用于进行gcc测试」· ADA 代码 · 共 210 行
ADA
210 行
-- C48009G.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:-- FOR ALLOCATORS OF THE FORM "NEW T'(X)", CHECK THAT-- CONSTRAINT_ERROR IS RAISED IF T IS A CONSTRAINED ACCESS-- TYPE AND THE OBJECT DESIGNATED BY X DOES NOT HAVE DISCRIMINANTS-- OR INDEX BOUNDS THAT EQUAL THE CORRESPONDING VALUES FOR T.-- HISTORY:-- EG 08/30/84 CREATED ORIGINAL TEST.-- JET 01/05/87 UPDATED HEADER FORMAT AND ADDED CODE TO PREVENT-- OPTIMIZATION.WITH REPORT;PROCEDURE C48009G IS USE REPORT; GENERIC TYPE G_TYPE IS PRIVATE; FUNCTION EQUAL_G (X : G_TYPE; Y : G_TYPE) RETURN BOOLEAN; FUNCTION EQUAL_G (X : G_TYPE; Y : G_TYPE) RETURN BOOLEAN IS BEGIN IF (IDENT_INT(3) = 3) AND (X = Y) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END EQUAL_G;BEGIN TEST("C48009G","FOR ALLOCATORS OF THE FORM 'NEW T'(X)', CHECK " & "THAT CONSTRAINT_ERROR IS RAISED WHEN " & "APPROPRIATE - CONSTRAINED ACCESS TYPE"); DECLARE TYPE INT IS RANGE 1 .. 5; TYPE UR(A : INT) IS RECORD B : INTEGER; END RECORD; TYPE UA IS ARRAY(INT RANGE <>) OF INTEGER; PACKAGE P IS TYPE UP(A, B : INT) IS PRIVATE; TYPE UL(A, B : INT) IS LIMITED PRIVATE; CONS_UP : CONSTANT UP; PRIVATE TYPE UP(A, B : INT) IS RECORD C : INTEGER; END RECORD; TYPE UL(A, B : INT) IS RECORD C : INTEGER; END RECORD; CONS_UP : CONSTANT UP := (2, 2, (IDENT_INT(3))); END P; TYPE A_UR IS ACCESS UR; TYPE A_UA IS ACCESS UA; TYPE A_UP IS ACCESS P.UP; TYPE A_UL IS ACCESS P.UL; SUBTYPE CA_UR IS A_UR(2); SUBTYPE CA_UA IS A_UA(2 .. 3); SUBTYPE CA_UP IS A_UP(3, 2); SUBTYPE CA_UL IS A_UL(2, 4); TYPE A_CA_UR IS ACCESS CA_UR; TYPE A_CA_UA IS ACCESS CA_UA; TYPE A_CA_UP IS ACCESS CA_UP; TYPE A_CA_UL IS ACCESS CA_UL; V_A_CA_UR : A_CA_UR; V_A_CA_UA : A_CA_UA; V_A_CA_UP : A_CA_UP; V_A_CA_UL : A_CA_UL; FUNCTION EQUAL IS NEW EQUAL_G(A_CA_UR); FUNCTION EQUAL IS NEW EQUAL_G(A_CA_UA); FUNCTION EQUAL IS NEW EQUAL_G(A_CA_UP); FUNCTION EQUAL IS NEW EQUAL_G(A_CA_UL); BEGIN BEGIN V_A_CA_UR := NEW CA_UR'(NEW UR'(1,(IDENT_INT(2)))); IF EQUAL (V_A_CA_UR, V_A_CA_UR) THEN FAILED ("NO EXCEPTION RAISED - UR"); END IF; EXCEPTION WHEN CONSTRAINT_ERROR => NULL; WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED - UR"); END; BEGIN V_A_CA_UA := NEW CA_UA'(NEW UA'(1 => 2, 2 => IDENT_INT(3))); IF EQUAL (V_A_CA_UA, V_A_CA_UA) THEN FAILED ("NO EXCEPTION RAISED - UA"); END IF; EXCEPTION WHEN CONSTRAINT_ERROR => NULL; WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED - UA"); END; BEGIN V_A_CA_UP := NEW CA_UP'(NEW P.UP'(P.CONS_UP)); IF EQUAL (V_A_CA_UP, V_A_CA_UP) THEN FAILED ("NO EXCEPTION RAISED - UP"); END IF; EXCEPTION WHEN CONSTRAINT_ERROR => NULL; WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED - UP"); END; BEGIN V_A_CA_UR := NEW CA_UR'(NULL); IF NOT EQUAL (V_A_CA_UR, V_A_CA_UR) THEN COMMENT ("NO EXCEPTION RAISED - UR"); END IF; EXCEPTION WHEN OTHERS => FAILED ("EXCEPTION RAISED - UR"); END; BEGIN V_A_CA_UA := NEW CA_UA'(NULL); IF NOT EQUAL (V_A_CA_UA, V_A_CA_UA) THEN COMMENT ("NO EXCEPTION RAISED - UA"); END IF; EXCEPTION WHEN OTHERS => FAILED ("EXCEPTION RAISED - UA"); END; BEGIN V_A_CA_UP := NEW CA_UP'(NULL); IF NOT EQUAL (V_A_CA_UP, V_A_CA_UP) THEN COMMENT ("NO EXCEPTION RAISED - UP"); END IF; EXCEPTION WHEN OTHERS => FAILED ("EXCEPTION RAISED - UP"); END; BEGIN V_A_CA_UL := NEW CA_UL'(NULL); IF NOT EQUAL (V_A_CA_UL, V_A_CA_UL) THEN COMMENT ("NO EXCEPTION RAISED - UL"); END IF; EXCEPTION WHEN OTHERS => FAILED ("EXCEPTION RAISED - UL"); END; END; RESULT;END C48009G;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?