c74211a.ada
来自「linux下编程用 编译软件」· ADA 代码 · 共 196 行
ADA
196 行
-- C74211A.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 WITHIN THE PACKAGE SPECIFICATION AND BODY, ANY EXPLICIT-- DECLARATIONS OF OPERATORS AND SUBPROGRAMS HIDE ANY OPERATIONS WHICH-- ARE IMPLICITLY DECLARED AT THE POINT OF THE FULL DECLARATION,-- REGARDLESS OF THE ORDER OF OCCURENCE OF THE DECLARATIONS.-- CHECK THAT IMPLICITLY DECLARED DERIVED SUBPROGRAMS HIDE IMPLICITLY-- DECLARED PREDEFINED OPERATORS, REGARDLESS OF THE ORDER OF OCCURENCE-- OF THE DECLARATIONS.-- DSJ 4/28/83-- JBG 9/23/83-- A) EXPLICIT DECLARATION HIDES LATER IMPLICIT DECL OF PREDEFINED OP.-- B) " " " LATER " " " DERIVED OP.-- C) " " " EARLIER " " " PREDEFINED OP.-- D) " " " EARLIER " " " DERIVED OP.WITH REPORT;PROCEDURE C74211A IS USE REPORT;BEGIN TEST ("C74211A", "CHECK THAT HIDING OF IMPLICITLY DECLARED " & "OPERATORS AND DERIVED SUBPROGRAMS IS DONE " & "CORRECTLY REGARDLESS OF ORDER OF DECL'S"); DECLARE PACKAGE P1 IS TYPE T1 IS RANGE 1 .. 50; C1 : CONSTANT T1 := T1(IDENT_INT(2)); D1 : CONSTANT T1 := C1 + C1; -- PREDEFINED "+" FUNCTION "+" (L, R : T1) RETURN T1; -- C) FOR "+". FUNCTION "-" (L, R : T1) RETURN T1; -- C) FOR "-". FUNCTION "/" (L, R : T1) RETURN T1; END P1; USE P1; PACKAGE BODY P1 IS A,B : T1 := 3; FUNCTION "+" (L, R : T1) RETURN T1 IS BEGIN IF L = R THEN RETURN 1; ELSE RETURN 2; END IF; END "+"; FUNCTION "-" (L, R : T1) RETURN T1 IS BEGIN IF L = R THEN RETURN 3; ELSE RETURN 4; END IF; END "-"; FUNCTION "/" (L, R : T1) RETURN T1 IS BEGIN IF L = R THEN RETURN T1(IDENT_INT(INTEGER(L))); ELSE RETURN T1(IDENT_INT(50)); END IF; END "/"; BEGIN IF D1 /= 4 THEN FAILED ("WRONG PREDEFINED OPERATION - '+' "); END IF; IF D1 + C1 /= 2 THEN FAILED ("IMPLICIT '+' NOT HIDDEN BY EXPLICIT '+'"); END IF; IF A + B /= 1 THEN FAILED ("IMPLICIT DECLARATION NOT HIDDEN " & "BY EXPLICIT DECLARATION - '+' "); END IF; IF A - B /= 3 THEN FAILED ("IMPLICIT DECLARATION NOT HIDDEN " & "BY EXPLICIT DECLARATION - '-' "); END IF; IF A * B /= 9 THEN FAILED ("WRONG PREDEFINED OPERATION - '*' "); END IF; IF B / A /= T1(IDENT_INT(3)) THEN FAILED ("NOT REDEFINED '/' "); END IF; END P1; PACKAGE P2 IS TYPE T2 IS PRIVATE; X , Y : CONSTANT T2; FUNCTION "+" (L, R : T2) RETURN T2; -- B) FUNCTION "*" (L, R : T2) RETURN T2; -- A) PRIVATE TYPE T2 IS NEW T1; -- B) +; A) * Z : T2 := T2(IDENT_INT(3))/4; -- Z = 50 USING -- DERIVED / FUNCTION "/" (L, R : T2) RETURN T2; -- D) FOR / X , Y : CONSTANT T2 := 3; END P2; PACKAGE BODY P2 IS FUNCTION "+" (L, R : T2) RETURN T2 IS BEGIN IF L = R THEN RETURN T2(IDENT_INT(5)); ELSE RETURN T2(IDENT_INT(6)); END IF; END "+"; FUNCTION "*" (L, R : T2) RETURN T2 IS BEGIN IF L = R THEN RETURN T2(IDENT_INT(7)); ELSE RETURN T2(IDENT_INT(8)); END IF; END "*"; FUNCTION "/" (L, R : T2) RETURN T2 IS BEGIN IF L = R THEN RETURN T2(IDENT_INT(9)); ELSE RETURN T2(IDENT_INT(10)); END IF; END "/"; BEGIN IF X + Y /= 5 THEN FAILED ("DERIVED SUBPROGRAM NOT HIDDEN BY " & "EXPLICIT DECLARATION - '+' "); END IF; IF Y - X /= 3 THEN FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " & "DERIVED SUBPROGRAM - '-' "); END IF; IF X * Y /= 7 THEN FAILED ("PREDEFINED OPERATOR NOT HIDDEN BY " & "EXPLICIT DECLARATION - '*' "); END IF; IF Y / X /= T2(IDENT_INT(9)) THEN FAILED ("DERIVED OPERATOR NOT HIDDEN BY " & "EXPLICIT DECLARATION - '/' "); END IF; IF Z /= 50 THEN FAILED ("DERIVED OPERATOR HIDDEN PREMATURELY " & " BY REDECLARED OPERATOR"); END IF; END P2; BEGIN NULL; END; RESULT;END C74211A;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?