cc3007a.ada

来自「用于进行gcc测试」· ADA 代码 · 共 119 行

ADA
119
字号
-- CC3007A.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 NAMES IN A GENERIC DECLARATIONS ARE STATICALLY BOUND.-- DAT 9/18/81-- SPS 2/7/83WITH REPORT; USE REPORT;PROCEDURE CC3007A ISBEGIN     TEST ("CC3007A", "NAMES IN GENERICS ARE STATICALLY BOUND");     DECLARE          I : INTEGER := 1;          EX : EXCEPTION;          IA : INTEGER := I'SIZE;          FUNCTION F (X : INTEGER) RETURN INTEGER;          PACKAGE P IS               Q : INTEGER := 1;          END P;          GENERIC               J : IN OUT INTEGER;               WITH FUNCTION FP (X : INTEGER) RETURN INTEGER IS F;          PACKAGE GP IS               V1 : INTEGER := F(I);               V2 : INTEGER := FP(I);          END GP;          GENERIC               TYPE T IS RANGE <> ;               WITH FUNCTION F1 (X : INTEGER) RETURN INTEGER IS F;               INP : IN T := T (I'SIZE);          FUNCTION F1 (X : T) RETURN T;          FUNCTION F1 (X : T) RETURN T IS          BEGIN               IF INP /= T(IA) THEN                    FAILED ("INCORRECT GENERIC BINDING 2");               END IF;               I := I + 1;               RETURN 2 * T (F1 (F (INTEGER (X) + I + P.Q)));          END F1;          PACKAGE BODY GP IS               PACKAGE P IS                    Q : INTEGER := I + 1;               END P;               I : INTEGER := 1000;               FUNCTION F IS NEW F1 (INTEGER);               FUNCTION F2 IS NEW F1 (INTEGER);          BEGIN               P.Q := F2 (J + P.Q + V1 + 2 * V2);               J := P.Q;               RAISE EX;          END GP;          FUNCTION F (X : INTEGER) RETURN INTEGER IS          BEGIN               I := I + 2;               RETURN X + I;          END;     BEGIN          DECLARE               I : INTEGER := 1000;               EX : EXCEPTION;               FUNCTION F IS NEW F1 (INTEGER);               V : INTEGER := F (3);          BEGIN               BEGIN                    DECLARE                         PACKAGE P IS NEW GP (V);                    BEGIN                         FAILED ("EX NOT RAISED");                    END;               EXCEPTION                    WHEN EX =>                         FAILED ("WRONG EXCEPTION RAISED");                    WHEN OTHERS =>                         IF V /= 266 THEN                              FAILED ("WRONG BINDING IN GENERICS");                         END IF;                         RAISE;               END;          END;     EXCEPTION          WHEN EX => NULL;          WHEN OTHERS => FAILED ("WRONG EXCEPTION RAISED 2");     END;     RESULT;END CC3007A;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?