Version 1.2 of ai12s/ai12-0425-1.txt

Unformatted version of ai12s/ai12-0425-1.txt version 1.2
Other versions for file ai12s/ai12-0425-1.txt

!standard 13.6(2)          21-03-14 AI12-0425-1/02
!standard J.15.8(1/3)
!standard N(16)
!standard N(22)
!class presentation 21-03-02
!status Amendment 1-2012 21-03-02
!status work item 21-03-02
!status received 20-03-02
!priority Low
!difficulty Easy
!qualifier Omission
!subject Presentation issues from public review
!summary
Various wording issues were noted by reviewers of Draft 29.
!question
(1) J.15.8(1/3) has two "and"s. Additionally, the simplified form adopted by AI12-0417-1 would be better anyway. Should this be changed? (Yes.)
(2) 13.6(2) says:
To convert a record from one representation to another, two record types with a common ancestor type need to be declared, with no inherited subprograms. Distinct representations can then be specified for the record types, and explicit conversion between the types can be used to effect a change in representation.
AI12-0376-1 repealed the requirement that there be no inherited subprograms, so it seems wrong to mention that here. Additionally, various related rules have been changed over the years since this was written. Perhaps it should say something about tagged types and/or by-reference types.
Should this wording be improved? (Yes.)
(3) N(16) is not worded as a definition but simply states a property. Reword? (Yes.)
(4) N(22) contains the odd phrase that a library unit "is always a package, subprogram, or generic unit". This seems better without the "always". Change this? (Yes.)
!recommendation
(1) Replace J.15.8(1/3) with: "The following pragmas are defined with the given forms:".
(2) Updated 13.6(2) to mention untagged types, and remove the part about primitive subprograms. Update the AARM notes accordingly, including a mention of by-reference types. (It doesn't make sense to define by-reference types with different representations, so it isn't necessary to mention it in the RM.)
(3) Replace with: "An elementary type is a type that does not have components."
(4) Follow the suggestion in the question.
!wording
[Editor's note: Changes (1) and (2) were applied to Draft 29 of the Ada 202x RM, even though they have not yet been approved, in order that that draft be as accurate as possible.]
(1) Replace J.15.8(1/3):
The form for pragmas Atomic, Volatile, Independent, Atomic_Components, and Volatile_Components, and Independent_Components is as follows:
with:
The following pragmas are defined with the given forms:
(2) Modify 13.6(2):
To convert {an untagged}[a] record from one representation to another, two record types with a common ancestor type need to be declared[, with no inherited subprograms]. Distinct representations can then be specified for the record types, and explicit conversion between the types can be used to effect a change in representation.
Replace AARM 13.6(2.a):
AARM Ramification: The language does not allow implicit copying of by-reference types, so it also does not allow different representations of related by-reference types. Similarly, language rules prevent related tagged types from having different representations of the parent part. Therefore, this technique cannot be used for tagged or by-reference types.
(3) Modify N(16):
Elementary type. An elementary type {is a type that} does not have components.
(4) Modify N(22):
Library unit. A library unit is a separately compiled program unit, and is [always] a package, subprogram, or generic unit.
!discussion
(See !recommendation.)
!corrigendum 13.6(2)
Replace the paragraph:
To convert a record from one representation to another, two record types with a common ancestor type need to be declared, with no inherited subprograms. Distinct representations can then be specified for the record types, and explicit conversion between the types can be used to effect a change in representation.
by:
To convert an untagged record from one representation to another, two record types with a common ancestor type need to be declared. Distinct representations can then be specified for the record types, and explicit conversion between the types can be used to effect a change in representation.
!corrigendum J.15.8(1/3)
Replace the paragraph:
The form for pragmas Atomic, Volatile, Independent, Atomic_Components, and Volatile_Components, and Independent_Components is as follows:
by:
The following pragmas are defined with the given forms:
!ASIS
No ASIS effect.
!ACATS test
No ACATS tests should be needed, none of these changes change any semantics.
!appendix

Editor's note, March 2, 2021.

In working on AI12-0417-1, it was noticed that J.15.8(1/3) contained an
extra "and". Moreover, Tucker thought it was grammetrically incorrect.
We used a simplified form in AI12-0417-1, and that form should be used
in J.15.8(1/3) for consistency and to correct the noted issues.

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

From an informal RM review from John Barnes (March 8, 2021)

N(16)           elementary type   not really a definition but simply stating a property.
	Better to say An elementary type is a type that does  not have components

N(22) library unit  “is always”  is a bit strange. maybe delete always.

 


Questions? Ask the ACAA Technical Agent