| DRAFT-3 Minutes for Meeting of Ada Language Maintenance Committee 85-02-25 and 85-02-27 San Jose, CA Monday, 85-02-25 Language Maintenance Committee members present were: Barnes, Belmont, Brender, Fisher, Goodenough, Hilfinger, Ichbiah, Krieg-Brueckner, and Woodger. The following observers were also present: Ted Baker Florida State University Gary Dismukes Telesoft, Inc. Anthony Gargaro Computer Sciences Corporation John Givler IBM Research, Yorktown, NY R. F. Maddock IBM UK Laboratories, Ltd. C. Robert Morgan Massachusetts Computer Associates Gregory Riccardi Florida State University David Sykes SofTech, Inc. T. A. D. White Computing Division, Ministry of Defence, UK Minutes of previous meetings were distributed. The results of the letter ballots were announced. Except where indicated below, all votes are for full approval (yea-nay-abstain). AI-00001/07: 8-3-1 (Opposed were: Fisher, Ichbiah, Woodger). AI-00172/04: 9-1-2 (Opposed was: Barnes). AI-00313/01: 10-1-1 (Barnes was in favor of provisional approval only). AI-00320/00: 5-6-1 (Opposed were: Barnes, Belmont, Fisher, Goodenough, Ichbiah, Woodger). AI-00322/00: 11-0-1. AI-00325/01: 9-2-1 (Opposed were Hilfinger, Woodger). Eight votes in favor were needed to pass. The results show that all letter ballots passed except for AI-00320. Procedural matters were discussed. Mike Woodger objected to "committee approved" Commentaries appearing without adequate review by the Committee for detailed wording. It was agreed that all modified Commentaries would be sent for review by the entire Committee before being accepted as being approved. Three weeks for review would be allowed. If modifications were required, the modified document would be redistributed for another three week period of review. The three week period would begin with distribution of the draft Commentary at ECLB. Simultaneous with release of the Commentary at ECLB, European members would be sent hard copies, possibly via TELEX. Only those draft committee approved commentaries that have passed this editorial review process would be presented for consideration by the joint ISO/Ada Board group. Each draft will have a unique version number. The committee then turned to address the individual commentaries. AI-00141/03 Meaning of "update" for shared actual parameters Further consideration of this commentary will be deferred until the results of an analysis by a student of Robert Dewar's are available. AI-00007/07 Constraining an incomplete or private type Discussion centered on when the check required by the Commentary should be performed. JDI argued in favor of having the check performed no later than the point at which an object of the type could be declared. The advantage of checking at this time is that it allows implementations to check earlier if they wish. Also, implementations must generally declare additional operations at this point; performing certain checks as well would be reasonable. The alternate position was advocated by JBG, who defended the position taken in the current draft. His argument was that a simple regular rule for performing checks should apply. Discussion of the two positions eventually centered on whether it was a good idea to allow implementation freedom in deciding when the checks should be made by allowing them to be delayed until completion of a type's declaration. Six members were in favor of allowing such freedom, and three were in favor of the Commentary's current position (which specifies exactly at what point the checks are to be made). It was decided that further written discussion of these points would be useful before a final decision was made. AI-00319/01 was not discussed in view of the lack of resolution for AI-00007. AI-00037/04 Instantiating when discriminants have defaults (It was decided to consider AI-00037 earlier than originally planned, because of its importance.) It was voted 8-1-0 to interpret the wording of 12.3.2(4) as having the same effect as the wording in the July 1982 version of the RM, i.e., the presence of defaults for discriminants can affect the legality of a generic instantiation. This decision was reached because the current interpretation of the wording (as reflected by the ACVC tests) was considered to severely impair the utility of Ada generic units. The interpretation was voted as a binding interpretation on the basis that implementation of the interpretation would not be difficult, revised ACVC tests reflecting this interpretation could not become official until June 10, 1986, and it would not be beneficial to the Ada community to allow implementations to deviate from this interpretation. A letter ballot was requested. AI-00001/07 Renaming and static expressions JDI requested an opportunity to discuss AI-00001. A procedural objection was raised (since this Commentary was not on the agenda), and no discussion was allowed. AI-00320/00 Sharing external files It was voted to correct AI-00320 so it states that the current index of a direct file is a property of the internal file and is unaffected by operations on other internal files (7-0-1). Discussion then centered on the issue of whether the current column, line, and page numbers were properties of the internal file, external file, or were implementation dependent properties when external files were shared. It was finally voted that these numbers were properties of the internal files and that AI-00320 should be amended accordingly (5-1-2). A letter ballot was requested. AI-00039/04 Forcing occurrences and premature uses of a type JDI proposed: "For the application of these rules (i.e., the rules in | 13.1(6, 7)) each operand of a relational operator, and similarly, the operand of a type conversion, is considered as qualified by the name of the corresponding operand type." Discussion focused on whether it would be possible to provide a more general rule reflecting the intent to prohibit operations on values of a type prior to the occurrence of its representation clause. The general rule would have to make an exception for the case of an enumeration representation clause, as pointed out in comment 83-00483. Further discussion was deferred until the Wednesday meeting. AI-00186/01 Pragma errors Discussion focused on Ron Brender's comment 83-00496, particularly for implementation defined pragmas, where some felt any occurrence of the type name in an expression should be considered forcing, even if the pragma was not "accepted" by an implementation, and others felt that such occurrences should not be considered forcing. No resolution was reached. Members were asked to comment further in writing giving the arguments and principles needed to resolve the issues. AI-00256/04 Compiling generic unit bodies after an instantiation JDI presented the argument that 12.3.2(4) requires satisfaction of the matching rules for all existing instantiations, and therefore, the generic body provided in the example should be rejected. An implementation is not allowed to add the body to the library and only later complain when an attempt is made to execute the main program. The vote in favor of this position was 6-1-1. A letter ballot was requested. AI-00311/02 NUMERIC_ERROR for null strings? On a motion to accept the Commentary as written, the vote was 4-3-1. It was then suggested that the recommendation be rewritten to reference AI-00325, i.e., an implementation is not allowed to raise NUMERIC_ERROR without reasonable grounds for doing so. The commentary as modified was approved 5-2-1. A letter ballot was requested. AI-00050/05 When does GET_LINE call SKIP_LINE? The recommendation was modified to state that if the end of the string is met, and in particular, if the string argument is null, END_OF_LINE is not tested and SKIP_LINE is not called. This was approved 4-0-5. A letter ballot was requested. AI-00199/02 Implicit declaration of library subprograms There was considerable discussion. It was agreed (informally) that 10.1(6) should be interpreted as meaning "identifier" for the term "name". Otherwise no resolution was reached before adjourning the meeting. Wednesday, 85-02-27 Present were: Barnes, Belmont, Brender, Dewar, Fisher, Goodenough, Hilfinger, Ichbiah, Krieg-Brueckner, and Woodger. Observers were: Ted Baker Florida State University Gary Dismukes Telesoft Robert Duff Software Leverage John Givler IBM Research Warren Loper Naval Ocean Systems Command R. Maddock IBM Hursley Laboratories Eric de Massas Alsys Gregory Riccardi Florida State University Ed Schonberg New York University C. Wetherell AT&T Bell Laboratories A future meeting schedule was discussed and agreed to. The next meeting of the LMC will be May 17 and 18 (Friday and Saturday) in Paris. The Friday meeting may be preempted by a meeting of the joint ISO WG and Ada Board to discuss issues arising from the ISO vote on the Ada Standard. Another meeting of the LMC will be held September 4-5, 1985 at SofTech's offices in Waltham. Another LMC meeting will be held in Los Angeles in February 1986 in conjunction with the SIGAda meeting. A European meeting of the LMC may be scheduled in conjunction with an Ada-Europe meeting when dates for Ada-Europe meetings are known. Discussion of language commentaries resumed. AI-00039/04 Forcing occurrences and premature uses of a type It was decided to have JDI/MW formulate recommendations based on LMC discussions. If possible, a broad recommendation would be formulated and justified. AI-00199/02 Implicit declaration of library subprograms It was pointed out that if a context clause associated with the initial compilation of a subprogram body is associated with the implicit declaration of a subprogram library unit declaration, then no subsequent recompilation of the body can modify the context clause associated with the declaration. This was considered undesirable. A straw vote was taken on the proposition that if a subprogram body is compiled originally, then it can be replaced by compiling a different (possibly non-conforming) body; if a subprogram declaration is compiled originally, then any subsequent subprogram body must conform to the declaration. The vote was 7-0-3. It was decided that further discussion of this issue was needed. AI-00225/01 Secondary units for generic subprograms This commentary was approved (10-0-0) with a request to redraft the recommendation so it was neutral with respect to the issues raised by AI-00199. AI-00266/01 Compiling a body for a library unit instantiation After extensive discussion, the intent of the summary was approved (10-0-0), but a revision of the response was required to reflect discussion at the meeting. AI-00154/02 Additional operations for composite and access types After some discussion and a correction to the response, this commentary was approved (8-0-1). It was agreed that the summary need only say that the Commentary gives details concerning what operations are implicitly declared for composite and access types. AI-00260/00 Limited "full types" After discussion, a straw vote was taken regarding the examples. The vote was 6-0-3 in favor of making all the examples legal. Further written discussion was requested on the justification for this position. AI-00032/02 Must low priority tasks be preempted? Since "expiration of the delay" means a task is eligible for execution, a lower priority task must be preempted if a higher priority task's delay expires (7-0-2) (voted as a confirmation). Moreover, it was the intent to require a preemptive scheduler. AI-00149/03 Activating a task before elaboration of its body There was considerable discussion concerning whether the checks specified in 3.9 were to be made as part of a subprogram call, task activation, and generic instantiation or were to be made before the call, activation, and instantiation. The following example was given by RFB: type T is range 1..10; function F (X : T) return BOOLEAN; X : BOOLEAN := F(0); -- PROGRAM_ERROR or CONSTRAINT_ERROR? With respect to task activation, it was noted that the checks to be done need only be done for each task body, not for each task object. RD: If the check is not part of the activation, it is before the activation, and there are no limits on how far before the activation. RD: There is a deeper issue: are any tasks activated even if some are unelaborated bodies? JDI: The intent of 11.6 was that between two semicolons an implementation can reorder any required checks that would cause exceptions to be raised. Finally a straw vote was taken on the proposition that all the elaboration checks for task bodies should be made before any of the task activations is attempted. The result was 5-4-1. A request was made to poll the observers, who voted 2-3-2. AI-00276/02 Equivalence of conditional and timed entry call JB pointed out that the use of a zero (or negative) delay is the only way to achieve the effect of a guarded else part. The effect of a small positive delay is different. Instead of checking to see if the call would be accepted, an implementation is entitled to decide that the delay would expire before any call could be accepted. It was agreed to amend the commentary accordingly, as a ramification (7-1-2). AI-00279/01 Raising NUMERIC_ERROR for GET It was agreed, as a ramification, that it was allowed for the GET subprograms to raise STORAGE_ERROR, but that if the data read did not satisfy the requirements of 14.3.7(8), any NUMERIC_ERROR should be handled internally and the exception DATA_ERROR raised instead (10-0-0). AI-00193/01 The value of 'FIRST's argument in overloading resolution The Commentary was approved (7-0-2). AI-00015/03 When the prefix of 'ADDRESS contains a function name There was considerable discussion on what rules, if any, are to be used for analysis of the example F(3)'ADDRESS in addition to the rules in Appendix E. This question was unresolved, but it was agreed (8-1-0) that the example was ambiguous. Discussion on this Commentary will continue. AI-00157/01 The role of syntax rules in overloading resolution Although it was agreed (8-1-0) that the example P((9)) should be unambiguous, the basis for the agreement was not resolved. Discussion on this Commentary will continue. The meeting was adjourned.