!standard 1.1 09-07-01 SI99-0055-1/01 !class Binding Interpretation 09-06-13 !status ARG Approved 7-0-0 09-06-13 !status work item 09-06-13 !status received 09-06-13 !priority Low !difficulty Easy !qualifier Omission !subject Editorial corrections to SI-47 and SI-48 !summary Make editorial corrections to the changes recorded in SI99-0047-1 and SI99-0048-1. These corrections are separately recorded so that the changes made after the balloting of the ASIS Committee Draft (CD) are separated from the changes made to that draft. !question Should we make the editorial changes recommended by the full ARG to the ASIS Committee Draft? (Yes.) !recommendation (See Summary.) !wording Modify bullets in the Introduction: * Added support for newly added constructs[ to ASIS], including tagged incomplete types, null procedures, overriding indicators, extended returns, exception messages in raise statements, and new predefined pragmas; * Added a query to determine directly if an element {that is}[representing] a name represents an implicit dereference; Modify in 1.1.4 (ASIS CD numbering): ASIS applications are encouraged to {similarly} follow {the}[this same] convention {of recording}[whenever they explicitly raise any ASIS exception to always record] a Status and Diagnosis prior to {explicitly} raising {any ASIS}[the] exception. Values of errors along with their general meanings are: -- {Capacity exceeded}[Implementation overloaded] -- Storage_Error [suppressed]{detected} -- Unexpected exception [suppressed]{detected} Modify the first paragraph of 1.2: The following standard{s} contains provisions which, through reference in this text, constitute provisions of this International Standard. At the time of publication, the edition indicated was valid. All standards are subject to revision, and parties to agreements based on this standard are encouraged to investigate the possibility of applying the most recent edition of the International Standard{s} indicated below. Members of IEC and ISO maintain registers of currently valid International Standards. Modify the first paragraph of 2.2.1: Structural queries are those ASIS queries which provide [the top-down decomposition and reverse bottom-up composition of the compilation unit according to its syntax]{information about the syntactic} structure{ of the compilation unit}. Structural queries are the primary component of the syntactic subsystem, and are only found in that subsystem. These structural queries are further characterized as: Modify the first paragraph of 2.2.3.1: The base object in ASIS is the Asis.Element. Element is a common abstraction used to represent syntactic constructs (both explicit and implicit) occurring within ASIS compilation units. Elements correspond to nodes of a {abstract syntax}[hierarchical] tree representation of an Ada program. Most elements of the tree have child elements. These children can appear as single elements (possibly with children themselves) or as a list of elements (also possibly with children). As an example, consider think of an Ada object declaration having three sub-parts or children: Modify in 2.3: Asis.Package_Views – This child package provides queries on semantic views of packages. Modify line breaks in 2.4.1: {with} Asis, Asis.Errors, Asis.Compilation_Units, Asis.Compilation_Units.Times, Asis.Compilation_Units.Relations, Asis.Ada_Environments, Asis.Implementation, Asis.Exceptions, Asis.Elements, Asis.Iterator, Asis.Declarations, Asis.Expressions, Asis.Clauses, Asis.Definitions, Asis.Statements, Asis.Text, Asis.Ids, Asis.Data_Decomposition[; and Asis.Data_Decomposition.Portable_Transfer.]{, Asis.Views, Asis.Program_Units, Asis.Subtype_Views, Asis.Subtype_Views.Elementary, Asis.Subtype_Views.Composite, Asis.Object_Views, Asis.Object_Views.Access_Views, Asis.Profiles, Asis.Callable_Views, Asis.Package_Views, Asis.Generic_Views, Asis.Exception_Views, Asis.Statement_Views, Asis.Declarations.Views, Asis.Definitions.Views, Asis.Expressions.Views;} Modify in 2.4.3: The ASIS application is almost complete. A main subprogram is needed that contains the required sequencing of calls to initialize the ASIS interface, {to} name the Ada environment, {to} access the Ada environment, {to} loop through all Compilation_Units in the ASIS Context with the Find_Violations procedure, and to close/release all ASIS resources. The Compilation_Units in the Context are placed into the Unit_List. This is achieved with the following main program, called My_Application. Modify the start of ten of the 3.7.xx clauses (ASIS CD numbering): {The type}[Type] Something_Kinds ... Modify in 3.10.4 (ASIS CD numbering): A library_unit_body has as a Supporter[,] its corresponding library_unit_declaration, if any. Modify in section 5: ... is [passed]{given} ... Modify in 6.8: Parameters [specify]{specifies}... [The name of the parameter is "Parameters".] Modify in 8.6: This operation has no physical {effect}[affect] on any implementor's Ada environment. Modify in 8.7: Returns True if Left and Right designate the same set of associated compilation units, and returns False otherwise. The Context {objects}[variables] may be open or closed. Modify in 8.8: No two physically separate open Context {objects}[variables] are ever Is_Identical. The value associated with an open ASIS Context {object}[variable] is also directly associated with every Compilation_Unit or Element derived from that Context. It is possible to obtain these Context values by way of the Enclosing_Context and the Enclosing_Compilation_Unit queries. These Context values can be tested for identity with each other or with specific Context {objects}[variables]. An open ASIS Context {object}[variable] and an Enclosing_Context value are only Is_Identical if the Compilation_Unit in question was derived specifically from that open ASIS Context {object}[variable]. Modify in 10: A specific Compilation_Unit value is valid (usable) for as long as the ASIS Context {object}[variable] used to create it remains open. Once an ASIS Context is closed, all associated Compilation_Unit values become invalid. It is erroneous to use an invalid Compilation_Unit value. Modify in 10.4: Two Compilation_Unit values, that represent the same physical compilation units (same Ada implementor Context implementation unit value) will test as Is_Equal, but not Is_Identical, if they were obtained from different open ASIS Context {objects}[variables]. Modify in 10.17: Returns True if Left and Right represent the same physical compilation unit or if both are Nil_Compilation_Unit values, and returns False otherwise. The two units may or may not be from the same ASIS Context[ variable]. ("The same physical compilation unit has the same version, as defined by Ada Standard Reference Manual E.3(5) and the same program text.) Modify in 10.18: Returns True if Left and Right represent the same physical compilation unit from the same open ASIS Context[ variable] or if both are Nil_Compilation_Unit values, and returns False otherwise. Modify in 10.19: Returns a null string {if Compilation_Unit is}[only if] A_Configuration_Compilation or a Nil_Compilation_Unit[ is given]. Modify in 10.20: Returns a null string {if Compilation_Unit is}[only if] a Nil_Compilation_Unit[ is given]. Modify in 11.2: Returns the time {at which}[that] this physical compilation unit was most recently updated in its implementor's Ada Environment. This will often be the time of its last compilation. The exact significance of the result is implementation specific. Returns Nil_ASIS_Time if the unit has a Nil or nonexistent unit kind, or if the time of last update is not available, or not meaningful, for any reason. Modify in 13.1: Returns a Nil_Element_List if {the Unit_Kind of} the unit is A_Nonexistent_Declaration, A_Nonexistent_Body, or An_Unknown_Unit. Modify in 13.3: Returns a Nil_Element_List if the Unit_Kind of the unit [has]{is} A_Nonexistent_Declaration, A_Nonexistent_Body, or An_Unknown_Unit. Modify in 13.42 (ASIS CD numbering): Returns True if Left and Right represent the same physical element from the same physical compilation unit, and returns False otherwise. The two elements may or may not be from the same open ASIS Context[ variable]. Modify in 13.43 (ASIS CD numbering): Returns True if Left and Right represent the same physical element from the same physical compilation unit from the same open ASIS Context[ variable], and returns False otherwise. Modify in 15.12 (ASIS CD Numbering): Returns a Nil_Element when {Declaration is }a full type declaration [is given] that has no corresponding private or incomplete type declaration, or when {Declaration is }a corresponding type declaration does not exist within The_Context. Modify in 15.24 (ASIS CD Numbering): If {Declaration is }a specification declaration[ is given], the same element is returned, unless it is a generic instantiation or an inherited subprogram declaration (see below). If {Declaration is }a subprogram renaming declaration[ is given]: If {Declaration is }a generic instantiation[ is given], the expanded generic specification template representing the instance is returned and Is_Part_Of_Instance. For example, an argument that is A_Package_Instantiation, results in a value that is A_Package_Declaration that can be analyzed with all appropriate queries. Modify in 15.25 (ASIS CD numbering): If {Declaration is }a body declaration[ is given], the same element is returned. If {Declaration is }a generic instantiation is given, the body representing the expanded generic body template is returned. (i.e., an argument that is A_Package_Instantiation, results in a value that is A_Package_Body_Declaration that can be analyzed with all appropriate ASIS queries). Modify in 17.2: For string literals, Value_Image {includes}[returns] the quotes around the string literal, these quotes are doubled, just as any quote appearing embedded in the string literal in the program text. Modify in 17.4 and in 17.5: Within_Element specifies the limits for the query which is {restricted}[limited] to the element and its children. Modify in 17.5: Returns True [only ]if the Name is referenced by explicit elements, and returns False otherwise. Modify in 18.28: Returns a Nil_Element if[ the]: * {the} prefix of the call denotes an implicit or explicit dereference of an access to a procedure value, or * {the} Statement is a call to a dispatching operation of a tagged type which is not statically determined. Modify in 20.22 (ASIS CD numbering): If the Line is the first line from the Lines result for an Element, it {might}[may] represent only a portion of a line from the original compilation. If the span began at character position P, the first Line of its Lines result is padded at the beginning with P-1 white space characters (Ascii.' ' or Ascii.Ht). The first character of the image will thus begin at character P of the program text for the first Line. Due to the possible presence of Ascii.Ht characters, the "column" position of characters within the image may not be the same as their print-column position when the image is displayed or printed. Modify in 21.1: Nil_Id is the value of [a]{an} Id that represents no element. Modify in 21.6: Returns True if Left and Right represent the same physical Id, from the same physical compilation unit, and returns False otherwise. {If True, the}[The] two Ids convert to Is_Identical Elements when converted with the same open ASIS Context. Modify in 22.11 (ASIS CD numbering): Returns True if Left and Right represent the same physical component of the same record or array type from the same physical compilation unit, and returns False otherwise. The two components may or may not be from the same open ASIS Context[ variable]. Modify in 22.12 (ASIS CD numbering): Returns True if Left and Right represent the same physical component of the same record or array type from the same physical compilation unit and the same open ASIS Context[ variable], and returns False otherwise. In Annex A, modify: ASIS queries. Those subprogram interfaces (and only those) defined in the ASIS standard; these are supported by types, subtypes, and exceptions also defined in the ASIS standard. Thus, ASIS queries and supporting entities are together the ASIS interface. The following informal query classification is used by the ASIS community: "black-box" queries are those ASIS queries which produce information about compilation units and "white-box" queries are those ASIS queries which produce information about Elements; semantic queries are those ASIS queries which express semantic properties of ASIS Elements in terms of other Elements; structural queries are those ASIS queries which provide {information about the syntactic} [the top-down decomposition and reverse bottom-up composition of the compilation unit according to its syntax] structure{ of the compilation unit}. (Note that semantic queries are generally named "Corresponding_..." or "Implicit_..." in the ASIS specification.) Needed Units. The set of compilation units ultimately needed by the given compilation unit [to make up or ]to be included in a completed partition. Fix the format of the sample output in clause B2. Start C.2.3 (ASIS CD numbering) with: To use ASIS in a CORBA environment, ... !discussion SI99-0047-1 and SI99-0048-1 were discussed and approved at the ARG meeting in Brest, France. As part of that discussion, various editorial changes were made to those SIs. Since the ASIS CD had already been submitted to WG 9 and started on the SC 22 process, we are making these changes in the next draft of the ASIS standard. !appendix ****************************************************************