Allowed names of library units AI-00192/05 1 88-05-23 ra WJ | !standard 08.06 (02) 88-05-23 AI-00192/05 !class ramification 84-03-13 | !status approved by WG9/AJPO 88-02-05 | !status approved by Director, AJPO 88-02-05 | !status approved by WG9/Ada Board 87-12-07 !status approved by Ada Board (21-0-0) 87-02-19 !status panel/committee-approved 86-10-15 (reviewed) !status panel/committee-approved (5-0-0) 86-09-11 (pending editorial review) !status work-item 86-08-07 !status received 84-03-13 !references 83-00300 !topic Allowed names of library units !summary 86-08-12 The name of a library unit cannot be a homograph of a name that is already declared in package STANDARD. !question 86-08-07 8.6(2) states: The package STANDARD forms a declarative region which encloses every library unit and consequently the main program; the declaration of every library unit is assumed to occur immediately within this package. Does this imply that a library unit may not have a name such as STRING which is already declared in STANDARD? !response 86-09-15 Since the name of a library unit is implicitly declared in STANDARD, the name cannot be a homograph (8.3(15)) of a name that is already declared in package STANDARD. In particular, a library unit cannot have the name BOOLEAN, INTEGER, FLOAT, CHARACTER, ASCII, NATURAL, POSITIVE, STRING, DURATION, CONSTRAINT_ERROR, NUMERIC_ERROR, PROGRAM_ERROR, STORAGE_ERROR, or TASKING_ ERROR. In addition, if an implementation has provided predefined numeric types such as LONG_INTEGER, SHORT_INTEGER, etc., a library unit cannot have any of these names. Similarly, no library unit package or generic unit can have the name TRUE or FALSE, but a library unit subprogram can have the name TRUE or FALSE as long as it is not a homograph of the enumeration literals TRUE or FALSE (i.e., as long as it is not a parameterless function with return type STANDARD.BOOLEAN).