1-- C87B02B.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-- CHECK THAT OVERLOADING RESOLUTION USES THE RULE THAT: 26-- 27-- IN A VARIABLE DECLARATION, THE TYPE OF THE INITIALIZATION 28-- EXPRESSION MUST MATCH THE VARIABLE'S EXPLICIT TYPEMARK. 29-- 30-- THE FOUR KINDS OF EXPRESSIONS TESTED HERE ARE: 31-- 32-- (A): A CALL TO AN OVERLOADED FUNCTION. 33-- (B): AN OVERLOADED OPERATOR SYMBOL. 34-- (C): AN OVERLOADED (INFIX) OPERATOR. 35-- (D): AN OVERLOADED ENUMERATION LITERAL. 36 37-- TRH 17 JUNE 82 38 39WITH REPORT; USE REPORT; 40 41PROCEDURE C87B02B IS 42 43 TYPE WHOLE IS NEW INTEGER RANGE 0..INTEGER'LAST; 44 TYPE CITRUS IS (LEMON, LIME, ORANGE); 45 TYPE HUE IS (RED, ORANGE, YELLOW); 46 47 FUNCTION F1 (X, Y : INTEGER) RETURN INTEGER IS 48 BEGIN 49 RETURN -1; 50 END F1; 51 52 FUNCTION F1 (X, Y : WHOLE) RETURN WHOLE IS 53 BEGIN 54 RETURN 0; 55 END F1; 56 57 FUNCTION F1 (X, Y : INTEGER) RETURN HUE IS 58 BEGIN 59 RETURN ORANGE; 60 END F1; 61 62 FUNCTION F1 (X, Y : INTEGER) RETURN CITRUS IS 63 BEGIN 64 RETURN ORANGE; 65 END F1; 66 67BEGIN 68 TEST ("C87B02B","OVERLOADED INITIALIZATION EXPRESSIONS" & 69 " IN VARIABLE DECLARATIONS"); 70 DECLARE 71 72 FUNCTION "REM" (X, Y : INTEGER) RETURN INTEGER 73 RENAMES F1; 74 75 FUNCTION "REM" (X, Y : WHOLE) RETURN WHOLE 76 RENAMES F1; 77 78 FUNCTION "REM" (X, Y : INTEGER) RETURN HUE 79 RENAMES F1; 80 81 FUNCTION "REM" (X, Y : INTEGER) RETURN CITRUS 82 RENAMES F1; 83 84 I1 : INTEGER := F1 (0, 0); 85 W1 : WHOLE := F1 (0, 0); 86 C1 : CITRUS := F1 (0, 0); 87 H1 : HUE := F1 (0, 0); 88 89 I2 : INTEGER := "REM" (0, 0); 90 W2 : WHOLE := "REM" (0, 0); 91 C2 : CITRUS := "REM" (0, 0); 92 H2 : HUE := "REM" (0, 0); 93 94 I3 : INTEGER := (0 REM 0); 95 W3 : WHOLE := (0 REM 0); 96 C3 : CITRUS := (0 REM 0); 97 H3 : HUE := (0 REM 0); 98 99 C4 : CITRUS := ORANGE; 100 H4 : HUE := ORANGE; 101 102 BEGIN 103 IF I1 /= -1 OR W1 /= 0 OR 104 CITRUS'POS (C1) /= 2 OR HUE'POS (H1) /= 1 THEN 105 FAILED ("(A): RESOLUTION INCORRECT - FUNCTION CALL"); 106 END IF; 107 108 IF I2 /= -1 OR W2 /= 0 OR 109 CITRUS'POS (C2) /= 2 OR HUE'POS (H2) /= 1 THEN 110 FAILED ("(B): RESOLUTION INCORRECT - OPERATOR SYMBOL"); 111 END IF; 112 113 IF I3 /= -1 OR W3 /= 0 OR 114 CITRUS'POS (C3) /= 2 OR HUE'POS (H3) /= 1 THEN 115 FAILED ("(C): RESOLUTION INCORRECT - INFIX OPERATOR"); 116 END IF; 117 118 IF CITRUS'POS (C4) /= 2 OR HUE'POS (H4) /= 1 THEN 119 FAILED ("(D): RESOLUTION INCORRECT - ENUMERATION LITERAL"); 120 END IF; 121 END; 122 123 RESULT; 124END C87B02B; 125