Disposition of Comments
From Final Committee Draft (FCD) Ballot of ISO/IEC 15291
Ada Semantic Interface Specification (ASIS)
During the balloting process for the Final Committee Draft (FCD) of ISO/IEC 15291, fourteen nations voted for approval. These nations included: Belgium, Canada, Czech Republic, Egypt, Finland, France, Ireland, Japan, Netherlands, Norway, Russian Federation, UK, Ukraine, and USA. Four nations abstained and five nations did not vote. There were no ballots voting for disapproval. Japan and the United States were the only nations to formally submit comments. In addition, there were several formatting comments provided by ISO. During the incorporation of these comments, several minor inconsistencies were identified and corrected. This document addresses the disposition of comments made to the Final Committee Draft of ISO/IEC 15291, Information technology — Programming languages — Ada Semantic Interface Specification (ASIS).
The disposition of formally submitted comments are provided by section number. Comment #4 was submitted by Japan; others by the United States. Comments with their disposition are:
1. Clause 126.96.36.199 (Implementation conformance requirements) needs to address the issue of categorization pragmas. ASIS needs a sensible policy in the use of pragmas which could change the semantics of an ASIS implementation. Technical; very important - must be resolved in the final standard.
Resolution: Changed clause 188.8.131.52(b) to read: "Adding "with" clauses, representation specifications, comments, and allowable pragmas. Allowable pragmas are those which do not change the semantics of the interface (e.g., List, Optimize, Page)."
2. Clause 2.2 (ASIS queries) should have additional descriptions for context and operations on elements. The following additional figures and descriptive text should be provided: relationship between the Ada environment and the ASIS context, compilation unit from a black box perspective, compilation unit from a white box perspective, and a figure depicting the operations on an element. Technical and Editorial; nice to have.
Resolution: Additional descriptions and text were added to clause 2.2.1 (Structural queries) to explain a compilation unit from both a black box and a white box perspective. Additional figures were provided in clause 2: Figure 2, ASIS as interface to Ada compilation environment; Figure 3, Application interface to ASIS Context; and Figure 5, Operations on elements. A new clause 2.4.3 "Notional ASIS Application" was added to support this comment.
3. Clause 184.108.40.206 (Semantic references) Figure 3 incorrectly demonstrates the use of Corresponding_Type_Declaration as the reference is to a predefined type. Either a user-defined type should be provided for the example or the example should use Corresponding_Name_Definition. Technical and Editorial; important - must be resolved in the final standard.
Resolution: Correction made. A new figure and corrected text is provided. A user-defined type is provided, requiring a change to Figure 2 and its text as well. Due to Comment #2 above, Figures 2 and 3 are now Figures 4 and 6 respectively.
4. Clause 2.4.3 (Erroneous applications) A typographic error: 2.4.3 (third bullet) "these are the only ones that shall be used before closing a context" should read "... shall be used after closing ..."
Resolution: Correction made. Clause 2.4.3 has been renumbered to clause 2.4.4 due to the resolution of the previous comment to clause 2.2 (comment #2 above).
5. Clause 3.12.3 (type Unit_Origins) states "Ada predefined language environment units defined in Annex A." These units are "listed" in Annex A (2); several are defined elsewhere. Editorial; nice to have.
Resolution: Correction made. "Defined" changed to "listed."
6. Clause 10.11 (function Corresponding_Children) A_Package_Instantiation appears as part of the Appropriate Unit_Kinds. This should be A_Package_Instance instead. A_Package_Instantiation is a declaration kind, not a unit kind. Editorial; important - must be resolved in the final standard.
Resolution: Correction made.
7. Clause 10.17 (function Is_Equal) and Clause 10.18 (function Is_Identical) should not discriminate based on compilation time stamp. Instead, they should discriminate based on compilation unit name, program text, and features allowed by ISO/IEC 8652:1995 (Ada 95). Technical; important - should be resolved in the final standard.
Resolution: Resolved by changing the parenthetical phrase on both 10.17 (Is_Equal) and 10.18 (Is_Identical) to: "The same physical compilation unit" have the same version, as defined by Reference Manual E.3(5) and the same program text."
8. Clause 10.32 (function Subunits) should include the following appropriate Unit_Kinds: A_Procedure_Body, A_Function_Body, A_Package_Body, A_Procedure_Body_Subunit, A_Function_Body_Subunit, A_Package_Body_Subunit, A_Task_Body_Subunit, and A_Protected_Body_Subunit. Editorial; nice to have.
Resolution: Additions made.
9. Clauses 13.33 (function Is_Part_Of_Implicit), 15.45 (function Generic_Actual_Part), and 17.22 (function Actual_Parameter) require changes in the commentary concerning normalized generic associations. The commentary needs to address the semantics in the case for implicit predefined operations. Technical; important - should be resolved in the final standard.
Resolution: Resolved. Necessary commentary was added to clause 13.33 (Asis.Elements.Is_Part_Of_Implicit), clause 15.45 (Asis.Declarations.Generic_Actual_Part), and clause 17.22 (Asis.Expressions.Actual_Parameter).
10. Clause 15.26 (function Corresponding_Declaration) has the last two items wrong on each of the three lists. The last two items on the first list should be A_Protected_Body_Declaration and A_Protected_Body_Stub. The last two items on the second and third lists should be A_Protected_Type_Declaration and A_Single_Protected_Declaration. Technical and Editorial; important - should be resolved in the final standard.
Resolution: Corrections made.
11. Clauses 15.26 (function Corresponding_Declaration) and 15.27 (function Corresponding_Body) should also return A_Formal_Package_Declaration and A_Formal_Package_Declaration_With_Box. Technical; important - should be resolved in the final standard.
Resolution: Corrections made A_Formal_Package_Declaration and A_Formal_Package_Declaration_With_Box were added to clause 15.26 (function Asis.Declaration.Corresponding_Declaration) and clause 15.27 (function Asis.Declaration.Corresponding_Body).
12. Clauses 15.26 (function Corresponding_Declaration) and 15.27 (function Corresponding_Body) need to add generic_renaming_declarations as appropriate parameters. Technical; important - should be resolved in the final standard.
Resolution: Generic_renaming_declarations were added to clause 15.26 (function Asis.Declaration.Corresponding_Declaration) and to clause 15.27, (function Asis.Declaration.Corresponding_Body.
13. Clause 15.27 (function Corresponding_Body) needs A_Package_Renaming_Declaration removed from the list of returned Declaration_Kinds. Editorial; nice to have.
Resolution: Deletion made.
14. Cause 15.29 (function Corresponding_Type) should return Definition_Kinds: A_Type_Definition. Editorial; important - should be resolved in the final standard.
Resolution: Correction made.
15. Clause 16.4 (function Implicit_Inherited_Declarations) should identify the returned Declaration_Kinds as: An_Enumeration_Literal_Specification, A_Discriminant_Specification, A_Component_Declaration, A_Procedure_Declaration, A_Function_Declaration, and An_Entry_Declaration. Editorial; nice to have.
Resolution: Additions made.
16. Clause 17 (package Asis.Expressions) should have interfaces for Is_Dispatching_Operation and Corresponding_Called_Function_Unwound. The procedure counterparts in Clause 18 (package Asis.Statements) should have interfaces for Is_Dispatching_Call and Corresponding_Called_Entity_Unwound. These are necessary to support OOP queries. Technical; important - should be resolved in the final standard.
Resolution: Functions Corresponding_Called_Function_Unwound and
Corresponding_Called_Entity_Unwound have nothing to do with OOP; they are best implemented as secondary queries. The following three interfaces were added to support OOP:
17.40 function Is_Dispatching_Operation
18.42 function Is_Dispatching_Call
18.43 function Is_Call_On_Dispatching_Operation
17. Clause 17.1 (function Corresponding_Expression_Type) requires clarification concerning the return of elements for task objects. Currently either a Nil_Element or A_Task_Type_Declaration are possible. Editorial; nice to have.
Resolution: Clarification made. Note closely related to Comment#19.
18. Clause 17.1 (function Corresponding_Expression_Type) requires clarification concerning the unwinding of subtypes and derived types. Technical; important - should be resolved in the final standard.
Resolution: To be more precise, clause 17.1, Corresponding_Expression_Type has been clarified with an example showing when unwinding should not occur.
19. Clause17.1 (function Corresponding_Expression_Type) should identify general rules for the return of Nil_Element for the cases when an Expression actually does not represent an Ada expression having an Ada type such as an enumeration_aggregate which is part of an enumeration_representation_clause. Technical; important - should be resolved in the final standard.
Resolution: Clarification on when Nil_Element is returned has been added to clause 17.1 (Corresponding_Expression_Type). Note closely related to Comment#17.
20. Clause 17.21 (function Formal_Parameter) needs to include the return of An_Operator_Symbol Element. Editorial; important - should be resolved in the final standard.
Resolution: Addition of An_Operator_Symbol was made to clause 17.21, Formal_Parameter.
21. Clause 17.26 (function Is_Defaulted_Association) should have the An_Array_Component_Association removed from the expected Association_Kinds list. An_Array_Component_Association can never be in the normalized form, and it can never have any default expression passed for an array component. Also A_Discriminant_Association and A_Record_Component_Association should be removed from the list of expected Association_Kinds because they also can never have default expressions (even though they can be normalized). Also the note should be flagged with a sentinel and moved to the end of the clause. Technical and Editorial; important - should be resolved in the final standard.
Resolution: In clause17.26, Asis.Expression.Is_Defaulted_Association, A_Discriminant_Association, An_Array_Component_Association, and A_Record_Component_Association are deleted from the
list of Expected Association_Kinds. The note is flagged and moved to the end of the clause.
22. Clause 18.20 (function Corresponding_Loop_Exited) should include Element_Kinds returned as: A_Loop_Statement, A_While_Loop_Statement, and A_For_Loop_Statement. Editorial; nice to have.
Resolution: Additions made.
23. Clause 20.1 (type Line) and 20.13 (function Is_Nil) require clarification on the difference between an empty line and a Nil_Line. Technical and Editorial; important - should be resolved in the final standard.
Resolution: Clarification has been added to clause 20.1 (function Is_Nil) and clause 20.13 (function Is_Nil) as requested. The change also required changes to clause 20.18 (function Length), clause 20.24 (function Line_Image), clause 20.25 (function Non_Comment_Image), and clause 20.26 (function Comment_Image).
24. Appendix B examples should replace use of String with the use of Wide_String and Program_Text. Editorial; nice to have.
Resolution: Corrections to both example B.1 and B.2 were made. The examples were tested to ensure they compiled and executed correctly.
Respectively submitted, 1 June 1998.
Clyde G. Roby Jr.
Project Co-Editor, ISO/IEC 15291
Project Co-Editor, ISO/IEC 15291
William Currie Colket
Chair, ASIS Rapporteur Group (ASISRG), ISO/IEC 15291