Version 1.4 of ai12s/ai12-0426-1.txt

Unformatted version of ai12s/ai12-0426-1.txt version 1.4
Other versions for file ai12s/ai12-0426-1.txt

!standard 3.5.6(7/2)          21-05-28 AI12-0426-1/04
!standard 3.5.6(8)
!standard 3.5.10(9)
!standard 5.6.1(3/5)
!standard 6.5(5.10/5)
!standard A.18.33(24/3)
!standard P(0)
!class presentation 21-05-07
!status Amendment 1-2012 21-05-07
!status work item 21-05-07
!status received 20-05-07
!priority Low
!difficulty Easy
!qualifier Omission
!subject Presentation issues from WG 9 review
!summary
Various wording issues were noted by WG 9 reviewers of Draft 29 of the RM.
!question
(1) A.18.33(24/3) "Short hand" is ususual, should it be written "shorthand"?
(2) 3.5.10(9) ends with a period ('.'), but it is the second bullet of a set of three, and the first bullet ends with a semicolon (';'). Should it end with a semicolon, too? (Yes.)
(3) In 3.5.6(7/2) and 3.5.6(8), the cross-references should be to G.2.1, right? (Yes.)
(4) 5.6.1(3/5) is labeled "Static Semantics", but the text is talking about runtime things. Should it be labeled "Dynamic Semantics"? (Yes.)
(5) There is a useful section of Annex P, the Syntax Cross Reference, which is not mentioned in the table of contents (nor in the index, nor almost anywhere else). Should we give it a subclause number? (Yes.)
(6) 6.5(5.10/5) refers to the undefined term "keyword" rather than the defined term "reserved word". Should this be changed? (Yes.)
!recommendation
(1) Certainly this should be "shorthand". The original comment also noted a few uses of "short-hand", we change those as well.
(2) Fix it! This has been wrong since the original Ada 95 Standard. Interestingly, the Ada 9x drafts 4.0 and 5.0 only have two bullets here, so the third bullet (3.5.10(10)) must have been a last-minute addition, and the punctuation wasn't changed properly.
(3) Correct the cross-references.
(4) Change the label.
(5) Split Annex P into P, P.1, and P.2.
(6) Replace "keyword" with "reserved word" in 6.5(5.10/5).
!wording
[Editor's note: These changes have been applied to Draft 30 of the RM, even though they are not yet approved, as they are not expected to need changes.]
(1) Modify A.18.33(24/3):
is a convenient {shorthand}[short hand] for
Also, replace "short-hand" by "shorthand" in AARM 3.8(15.a) and AARM 11.1(1.c).
(2) Replace the ending '.' with ';' in 3.5.10(9).
(3) Replace "G.2" with "G.2.1" in 3.5.6(7/2) and 3.5.6(8).
(4) No actual wording (just fix the label).
(5) Split Annex P as follows, adding text and headings as indicated:
Annex P - Syntax Summary
This Annex summarizes the complete syntax of the language.{
P.1 Syntax Rules
This subclause lists the complete syntax of the language in the order it appears in this Reference Manual.} See 1.1.4 for a description of the notation used.
@SyntaxSummary -- the actual syntax list appears here.
{P.2 Syntax Cross Reference}
In the following syntax cross reference, each syntactic category is followed by the subclause number where it is defined. In addition, each syntactic category S is followed by a list of the categories that use S in their definitions. For example, the first listing below shows that abort_statement appears in the definition of simple_statement.
@SyntaxXRef -- the actual syntax cross-refernece appears here.
[Editor's note: This does not appear in !corrigendum sections, that's intentional.]
(6) Modify 6.5(5.10/5):
If the {reserved word}[keyword] aliased is present in an extended_return_object_declaration, the type of the extended return object shall be immutably limited.
!discussion
(See !recommendation.)
!corrigendum 3.5.6(7/2)
Replace the paragraph:
For the execution of a predefined operation of a real type, the implementation need not raise Constraint_Error if the result is outside the base range of the type, so long as the correct result is produced, or the Machine_Overflows attribute of the type is False (see G.2).
by:
For the execution of a predefined operation of a real type, the implementation need not raise Constraint_Error if the result is outside the base range of the type, so long as the correct result is produced, or the Machine_Overflows attribute of the type is False (see G.2.1).
!corrigendum 3.5.6(8)
Replace the paragraph:
An implementation may provide nonstandard real types, descendants of root_real that are declared outside of the specification of package Standard, which need not have all the standard characteristics of a type defined by a real_type_definition. For example, a nonstandard real type might have an asymmetric or unsigned base range, or its predefined operations might wrap around or "saturate" rather than overflow (modular or saturating arithmetic), or it might not conform to the accuracy model (see G.2). Any type descended from a nonstandard real type is also nonstandard. An implementation may place arbitrary restrictions on the use of such types; it is implementation defined whether operators that are predefined for "any real type" are defined for a particular nonstandard real type. In any case, such types are not permitted as explicit_generic_actual_parameters for formal scalar types — see 12.5.2.
by:
An implementation may provide nonstandard real types, descendants of root_real that are declared outside of the specification of package Standard, which need not have all the standard characteristics of a type defined by a real_type_definition. For example, a nonstandard real type might have an asymmetric or unsigned base range, or its predefined operations might wrap around or "saturate" rather than overflow (modular or saturating arithmetic), or it might not conform to the accuracy model (see G.2.1). Any type descended from a nonstandard real type is also nonstandard. An implementation may place arbitrary restrictions on the use of such types; it is implementation defined whether operators that are predefined for "any real type" are defined for a particular nonstandard real type. In any case, such types are not permitted as explicit_generic_actual_parameters for formal scalar types — see 12.5.2.
!corrigendum 3.5.10(9)
Replace the paragraph:
by:
!corrigendum 6.5(5.10/5)
Replace the paragraph:
If the keyword aliased is present in an extended_return_object_declaration, the type of the extended return object shall be immutably limited.
by:
If the reserved word aliased is present in an extended_return_object_declaration, the type of the extended return object shall be immutably limited.
!corrigendum A.18.33(24/3)
Replace the paragraph:
is a convenient short hand for
by:
is a convenient shorthand for
!ASIS
No ASIS effect.
!ACATS test
No ACATS tests should be needed, none of these changes change any semantics.
!appendix

From the WG 9 review, Issue #125

A.18.33(24/3)

Shorthand is normally one word these days. By far the majority of uses of 
shorthand in the AARM are one word. There are some instances of short-hand
which reminds me that in the old days we said to-day and to-morrow.

****************************************************************

From the WG 9 review, Issue #30

3.5.10(9)

The bullet should end in a ';' not a '.'.

****************************************************************

From the WG 9 review, Issue #28

3.5.6 (7/2), (8) Incorrect cross-references

The references to G.2 should be to G.2.1.

****************************************************************

From the WG 9 review, Issue #10 - Tucker Taft

There is a useful section of Annex P, the Syntax Cross Reference, which is 
not mentioned in the table of contents (nor in the index, nor almost anywhere
else). It would seem to make sense to give it a section number and mention it
in the table of contents, and perhaps also in the index.

[Editor's reply:]

That was carried over from Ada 9x - it's always been true. I presume that
there was some reason for that, but that was above my pay grade at the 
time. :-)

One possibility is the oddity of a subclause P.1 without any P.2. Maybe it 
would be better to make the existing summary P.1 and the cross-reference P.2?

[Tucker's reply:]

I would suggest: 
   P -- Syntax Summary 
   P.1 -- Syntax Rules 
   P.2 -- Syntax Cross-Reference

****************************************************************

From the WG 9 review, Issue #96

6.5 (5.10/5) use of "Keyword" instead of "Reserved word"

[Editor's reply:] While "keyword" is sometimes used in informal AARM text, it
should not appear in normative RM text, so the (unchanged except for paragraph
number) use in 6.5(5.10/5) should be changed.

****************************************************************

Questions? Ask the ACAA Technical Agent