Version 1.3 of ai12s/ai12-0426-1.txt
!standard 3.5.6(7/2) 21-05-27 AI12-0426-1/03
!standard 3.5.6(8)
!standard 3.5.10(9)
!standard 5.6.1(3/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.)
!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.
!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.]
!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:
- For a subtype defined by a subtype_indication without a
digits_constraint, the digits of the subtype is the same as that of the
subtype denoted by the subtype_mark in the subtype_indication.
by:
- For a subtype defined by a subtype_indication without a
digits_constraint, the digits of the subtype is the same as that of the
subtype denoted by the subtype_mark in the subtype_indication;
!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
****************************************************************
Questions? Ask the ACAA Technical Agent