#339 closed defect (fixed)

get_equal_name_$check_equal_name_ has several problems

Reported by: Gary Dixon Owned by: Gary Dixon
Priority: major Milestone: MR12.9
Component: Standard Library Version: MR12.8
Keywords: Cc:

Description (last modified by Gary Dixon)

When the get_equal_name_$check_equal_name_ entry point was added, the change did not add the check_equal_name_ onto the bound_library_1_ object segment, which would allow the new entry point to be referenced simply as check_equal_name_ (rather than get_equal_name_$check_equal_name_).

Also, the change did not add an include file with named constants defining the EQUAL_TYPE_xxx values that can be returned in the subroutine's code argument (in addition to the possible error_table_ values that argument also returns). The get_equal_name_.info segment also does not document these EQUAL_TYPE_xxx values. So any programmer that needs to use the check_equal_name_ entry point must: examine existing callers code to see how to use the results; or examine get_equal_name_$check_equal_name_ entry point code to see what code values it returns.

These omissions boost importance of this bug from an enhancement to a defect.

This ticket suggests the following changes.

  1. Change bound_library_1_.bind: As part of the objectname: get_equal_name_; entry, add a synonym: keyword naming check_equal_name_ as a full synonym for the get_equal_name_ object segment. This was cause the loader to add check_equal_name_ as a name on >sl1>bound_library_1_ bound object containing get_equal_name_.
  1. Create a >ldd>incl>check_equal_name.incl.pl1 segment defining three new constants describing the non-failing code values that may be returned by check_equal_name_$check_equal_name_.
declare   (
          EQUAL_TYPE_USE_ORIGINAL_NAME  initial (2),        /* Equal name is == or ===; it selects full original name.*/
          EQUAL_TYPE_USE_GET_EQUAL_PROC initial (1),        /* Equal name selects some parts of original name.        */
          EQUAL_TYPE_USE_EQUAL_NAME     initial (0)         /* Equal name has no = or % chars; it replaces original.  */
          )                             fixed bin (2) static options (constant);
  1. Create a new check_equal_name_.info segment to document the calling sequence of the check_equal_name_ entry point under its new, shorter name. It will also refer the user to the values in the new check_equal_name.incl.pl1 segment.
  1. Remove use of underlining in the get_equal_name_.pl1 comments which give details about the finite statement machine implementing that program, but are unreadable on a video terminal. Also replace \014 pagination chars used throughout with the more modern %page; macro.

Change History (3)

comment:1 by Gary Dixon, 14 months ago

Description: modified (diff)

comment:2 by Gary Dixon, 13 months ago

Owner: changed from Eric Swenson to Gary Dixon
Status: newaccepted

comment:3 by Eric Swenson, 12 months ago

Milestone: MR12.9
Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.