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 + -
显示快捷键?