1-- C84009A.ADA
2
3--                             Grant of Unlimited Rights
4--
5--     Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
6--     F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
7--     unlimited rights in the software and documentation contained herein.
8--     Unlimited rights are defined in DFAR 252.227-7013(a)(19).  By making
9--     this public release, the Government intends to confer upon all
10--     recipients unlimited rights  equal to those held by the Government.
11--     These rights include rights to use, duplicate, release or disclose the
12--     released technical data and computer software in whole or in part, in
13--     any manner and for any purpose whatsoever, and to have or permit others
14--     to do so.
15--
16--                                    DISCLAIMER
17--
18--     ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
19--     DISCLOSED ARE AS IS.  THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
20--     WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
21--     SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
22--     OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
23--     PARTICULAR PURPOSE OF SAID MATERIAL.
24--*
25-- OBJECTIVE:
26--     CHECK THAT A USE CLAUSE MAKES AN IMPLICITLY OR EXPLICITLY
27--     DECLARED OPERATOR DIRECTLY VISIBLE IF NO HOMOGRAPH OF THE
28--     OPERATOR IS ALREADY DIRECTLY VISIBLE.
29
30-- HISTORY:
31--     JET 03/10/88  CREATED ORIGINAL TEST.
32
33WITH REPORT; USE REPORT;
34PROCEDURE C84009A IS
35
36     TYPE INT IS NEW INTEGER RANGE -100 .. 100;
37
38     PACKAGE PACK IS
39          FUNCTION "+" (LEFT : INTEGER; RIGHT : INT) RETURN INTEGER;
40          FUNCTION "-" (LEFT, RIGHT : INT) RETURN INT;
41          FUNCTION "-" (RIGHT : INT) RETURN INTEGER;
42          FUNCTION "+" (RIGHT : INT) RETURN INTEGER;
43     END PACK;
44
45     FUNCTION "+" (RIGHT : INT) RETURN INTEGER IS
46     BEGIN
47          RETURN INTEGER'(1) + INTEGER(RIGHT);
48     END "+";
49
50     PACKAGE BODY PACK IS
51          FUNCTION "+" (LEFT : INTEGER; RIGHT : INT) RETURN INTEGER IS
52          BEGIN
53               RETURN LEFT + INTEGER(RIGHT);
54          END "+";
55
56          FUNCTION "-" (LEFT, RIGHT : INT) RETURN INT IS
57          BEGIN
58               FAILED ("BINARY ""-"" ALREADY VISIBLE FOR TYPE INT");
59               RETURN LEFT + (-RIGHT);
60          END "-";
61
62          FUNCTION "-" (RIGHT : INT) RETURN INTEGER IS
63          BEGIN
64               RETURN INTEGER'(0) - INTEGER(RIGHT);
65          END "-";
66
67          FUNCTION "+" (RIGHT : INT) RETURN INTEGER IS
68          BEGIN
69               FAILED ("UNARY ""+"" ALREADY VISIBLE FOR TYPE INT");
70               RETURN INTEGER'(0) + INTEGER(RIGHT);
71          END "+";
72     END PACK;
73
74     USE PACK;
75
76BEGIN
77     TEST ("C84009A", "CHECK THAT A USE CLAUSE MAKES AN IMPLICITLY " &
78                      "OR EXPLICITLY DECLARED OPERATOR DIRECTLY " &
79                      "VISIBLE IF NO HOMOGRAPH OF THE OPERATOR IS " &
80                      "ALREADY DIRECTLY VISIBLE");
81
82     IF INTEGER'(10) + INT'(10) /= IDENT_INT(20) THEN
83          FAILED ("INCORRECT RESULT FROM BINARY ""+""");
84     END IF;
85
86     IF INT'(5) - INT'(3) /= INT'(2) THEN
87          FAILED ("INCORRECT RESULT FROM BINARY ""-""");
88     END IF;
89
90     IF -INT'(20) /= IDENT_INT(-INTEGER'(20)) THEN
91          FAILED ("INCORRECT RESULT FROM UNARY ""-""");
92     END IF;
93
94     IF +INT'(20) /= IDENT_INT(+INTEGER'(21)) THEN
95          FAILED ("INCORRECT RESULT FROM UNARY ""+""");
96     END IF;
97
98     RESULT;
99END C84009A;
100