1-- C87B45A.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-- FOR A DEFAULT SUBPROGRAM PARAMETER, THE TYPE OF THE INITIALIZATION 28-- EXPRESSION MUST MATCH THE PARAMETERS'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 24 JUNE 82 38 39WITH REPORT; USE REPORT; 40 41PROCEDURE C87B45A 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 ("C87B45A","OVERLOADED INITIALIZATION EXPRESSIONS" & 69 " IN DEFAULT SUBPROGRAM PARAMETERS"); 70 DECLARE 71 72 FUNCTION "/" (X, Y : INTEGER) RETURN INTEGER 73 RENAMES F1; 74 75 FUNCTION "/" (X, Y : WHOLE) RETURN WHOLE 76 RENAMES F1; 77 78 FUNCTION "/" (X, Y : INTEGER) RETURN HUE 79 RENAMES F1; 80 81 FUNCTION "/" (X, Y : INTEGER) RETURN CITRUS 82 RENAMES F1; 83 84 PROCEDURE P1 (I1 : INTEGER := F1 (0, 0); 85 W1 : WHOLE := F1 (0, 0); 86 C1 : CITRUS := F1 (0, 0); 87 H1 : HUE := F1 (0, 0); 88 I2 : INTEGER := "/" (0, 0); 89 W2 : WHOLE := "/" (0, 0); 90 C2 : CITRUS := "/" (0, 0); 91 H2 : HUE := "/" (0, 0); 92 I3 : INTEGER := (0 / 0); 93 W3 : WHOLE := (0 / 0); 94 C3 : CITRUS := (0 / 0); 95 H3 : HUE := (0 / 0); 96 C4 : CITRUS := ORANGE; 97 H4 : HUE := ORANGE) IS 98 BEGIN 99 IF I1 /= -1 OR W1 /= 0 OR 100 CITRUS'POS (C1) /= 2 OR HUE'POS (H1) /= 1 THEN 101 FAILED ("(A): RESOLUTION INCORRECT - FUNCTION CALL"); 102 END IF; 103 104 IF I2 /= -1 OR W2 /= 0 OR 105 CITRUS'POS (C2) /= 2 OR HUE'POS (H2) /= 1 THEN 106 FAILED ("(B): RESOLUTION INCORRECT " & 107 "- OPERATOR SYMBOL"); 108 END IF; 109 110 IF I3 /= -1 OR W3 /= 0 OR 111 CITRUS'POS (C3) /= 2 OR HUE'POS (H3) /= 1 THEN 112 FAILED ("(C): RESOLUTION INCORRECT - INFIX OPERATOR"); 113 END IF; 114 115 IF CITRUS'POS (C4) /= 2 OR HUE'POS (H4) /= 1 THEN 116 FAILED ("(D): RESOLUTION INCORRECT - ENUMERATION " & 117 "LITERAL"); 118 END IF; 119 END P1; 120 121 BEGIN 122 P1; 123 END; 124 125 RESULT; 126END C87B45A; 127