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

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

!standard 3.10(9/5)          19-04-09 AI12-0324-1/03
!standard 3.10.2(19.2/5)
!standard 4.3.4(0)
!standard 6.4.1(6.17/5)
!standard 7.3.3(0)
!standard 7.3.4(0)
!standard 8.6(17.1/4)
!standard D.4(1/3)
!class binding interpretation 19-03-19
!status Amendment 1-2012 19-03-19
!status ARG Approved 10-0-0 19-04-09
!status work item 19-03-19
!status received 19-03-06
!priority Low
!difficulty Easy
!qualifier Clarification
!subject More changes from the RM review
!summary
Various wording changes are made to clarify the Standard.
!question
(1) The change in 3.10(9/5) reads:
A qualified_expression is an aliased view when the operand denotes an aliased view.
It's odd that we say something "is" a view when something else "denotes" a view. Should "is an aliased" be replaced with "denotes an aliased"? (Yes.)
(2) The start of 3.10.2(19.2/5) is hard to read:
Inside a return statement that applies to a function or generic function F, or the return expression of an expression function F, ...
Should we make this easier to read? (Yes.)
(3) There are three queuing policies defined in D.4 (D.4(7/5) says that explicitly), but D.4(1/3) says there are only two. Should this be fixed? (Yes.)
(4) The wording for 7.3.3(6/5) seems be a charter member of the Department of Redundancy Department. It says:
... then a default initial condition check is performed after successful default initialization of an object of type T by default (see 3.3.1). ...
"Default initialization ... by default"?? Should this be changed? (Yes.)
(5) Some of the text of 7.3.4 requires improvement. Should we make these improvements? (Yes.)
(6) 8.6(17.1/4) talks about the "execution of the usage name", but names are evaluated, not executed. Should this be fixed? (Yes.)
(7) 6.4.1(6.17/5) is wordier than necessary. Should it be simplified? (Yes.)
(8) 4.3.4(1/5) reads awkwardly, as it has two gerund forms close together ("resulting from starting with"). Should this be improved? (Yes.)
(9) The first sentence of 4.3.4(14/5) is awkward. The phrase "and using that value..." sounds ungrammatical in the context of the earlier part of the sentence. Should this be revised? (Yes.)
(10) The example of 4.3.4(27/5) will always raise Constraint_Error, which probably isn't what is intended. Should this be changed? (Yes.)
!recommendation
(1) Use "denotes" rather than "is".
(2) Add a second use of "inside".
(3) Change "two" to "three".
(4) Delete the extra "by default".
(5) See the !wording for the exact changes.
(6) Replace "with" with "of" and "execution" with "evaluation".
(7) Replace "that denotes" with "denoting" and "and" with "that".
(8) Simplify the entire paragraph.
(9) Replace "and using that value" with ", then that value is used"
(10) Replace the example.
!wording
(1) Modify 3.10(9/5):
... A qualified_expression {denotes}[is] an aliased view when the operand denotes an aliased view.
(2) Modify 3.10.2(19.2/5):
Inside a return statement that applies to a function or generic function F, or {inside} the return expression of an expression function F, ...
(3) Modify D.4(1/3):
This subclause clause specifies a mechanism for a user to choose an entry queuing policy. It also defines {three}[two] such policies. Other policies are implementation defined.
(4) Modify 7.3.3(6/5):
If one or more default initial condition expressions apply to a type T, then a default initial condition check is performed after successful [default] initialization of an object of type T by default (see 3.3.1). In the case of a controlled type, the check is performed after the call to the type's Initialize procedure (see 7.6).
(5) Modify 7.3.4(1/5):
[It is usual that some of the] {Certain} characteristics of [a data] {an object of a given} type are unchanged by most of the primitive operations [on]{of} the type. Such characteristics are called /stable properties/ of the type.
Modify 7.3.4(3/5):
A /type property aspect definition/ is a list of names written in the syntax of a positional_array_aggregate. A /subprogram property aspect definition/ is a list of names preceded by an optional not{, also} written in the syntax of a positional_array_aggregate.
Modify 7.3.4(16/5):
For a primitive subprogram S of a type T, the stable property functions [for] {of} S for type T are:
Modify 7.3.4(22/5):
... [where F is]{with one such equality included for} each stable property function {F} of S for type T that does not occur in the explicit specific postcondition expression of S ...
Modify 7.3.4(23/5):
... [where F is]{with one such equality included for} each class-wide stable property function {F} of S for type T that does not occur in any class-wide postcondition expression that applies to S ...
(6) Modify 8.6(17.1/4):
... If the type or subtype is by-reference, the associated object [with]{of} the value is the object associated (see 6.2) with the [execution]{evaluation} of the usage name.
(7) Modify 6.4.1(6.17/5):
...[that denotes] {denoting} an object of an elementary type {that}[and] is passed ...
(8) Modify 4.3.4(1/5):
{Evaluating a}[A] (record or array) delta aggregate yields a composite value {that starts} [resulting from starting] with a copy of another value of the same type and then {assigns}[subsequently assigning] to some (but typically not all) components of the copy.
(9) Modify 4.3.4(14/5):
The evaluation of a delta_aggregate begins with the evaluation of the base_expression of the delta_aggregate{; then}[ and using] that value {is used }to create and initialize the anonymous object of the aggregate. The bounds of the anonymous object of an array_delta_aggregate and the discriminants and tag (if any) of the anonymous object of a record_delta_aggregate are those of the base_expression.
(10) Replace 4.3.4(27/5) with:
A1 : Vector := ((0 => 0.0, 1 => 1.0, 2 => 2.0) with delta Integer(Random * 2.0) => 14.2);
!discussion
For (1), the wording surrounding the new sentence uses "is defined to be aliased" or "denotes an aliased view". We ought to use one of these phrasings.
For (8), the text seems to have a number of extra words. Changing the verb tense seems to help, too.
!corrigendum 3.10(9/3)
Replace the paragraph:
A view of an object is defined to be aliased if it is defined by an object_declaration, component_definition, parameter_specification, or extended_return_object_declaration with the reserved word aliased, or by a renaming of an aliased view. In addition, the dereference of an access-to-object value denotes an aliased view, as does a view conversion (see 4.6) of an aliased view. The current instance of an immutably limited type (see 7.5) is defined to be aliased. Finally, a formal parameter or generic formal object of a tagged type is defined to be aliased. Aliased views are the ones that can be designated by an access value.
by:
A view of an object is defined to be aliased if it is defined by an object_declaration, component_definition, parameter_specification, or extended_return_object_declaration with the reserved word aliased, or by a renaming of an aliased view. In addition, the dereference of an access-to-object value denotes an aliased view, as does a view conversion (see 4.6) of an aliased view. A qualified_expression denotes an aliased view when the operand denotes an aliased view. The current instance of an immutably limited type (see 7.5) is defined to be aliased. Finally, a formal parameter or generic formal object of a tagged type is defined to be aliased. Aliased views are the ones that can be designated by an access value.
!corrigendum 3.10.2(19.2/4)
Replace the paragraph:
by:
!corrigendum 4.3.4(0)
Insert new clause:
Just enough to cause a conflict; the real changes are in the conflict file.
!corrigendum 6.4.1(6.17/3)
Replace the paragraph:
by:
!corrigendum 7.3.3(0)
Insert new clause:
Just enough to cause a conflict; the real changes are in the conflict file.
!corrigendum 7.3.4(0)
Insert new clause:
Just enough to cause a conflict; the real changes are in the conflict file.
!corrigendum 8.6(17.1/4)
Replace the paragraph:
Within an aspect_specification for a type or subtype, the current instance represents a value of the type; it is not an object. The nominal subtype of this value is given by the subtype itself (the first subtype in the case of a type_declaration), prior to applying any predicate specified directly on the type or subtype. If the type or subtype is by-reference, the associated object with the value is the object associated (see 6.2) with the execution of the usage name.
by:
Within an aspect_specification for a type or subtype, the current instance represents a value of the type; it is not an object. The nominal subtype of this value is given by the subtype itself (the first subtype in the case of a type_declaration), prior to applying any predicate specified directly on the type or subtype. If the type or subtype is by-reference, the associated object of the value is the object associated (see 6.2) with the evaluation of the usage name.
!corrigendum D.4(1/3)
Replace the paragraph:
This subclause specifies a mechanism for a user to choose an entry queuing policy. It also defines two such policies. Other policies are implementation defined.
by:
This subclause specifies a mechanism for a user to choose an entry queuing policy. It also defines three such policies. Other policies are implementation defined.
!ASIS
No ASIS effect.
!ACATS test
No ACATS tests should be needed, all of these are mainly wording improvements.
!appendix

From: Randy Brukardt
Written: Tuesday, March 19, 2019  9:59 PM

Steve's review includes:

>3.10 -
>   The new wording (which presumably was discussed when the AI12-0228 was
>   approved) is
>      A qualified_expression is an aliased view when the operand denotes
>      an aliased view.
>   Should "is an aliased" be replaced with "denotes an aliased"?

AIs tend to discuss wording in a vacuum, while this review is to read the 
wording in place. 

Anyway, the wording around this either uses "is defined to be aliased" or 
"denotes an aliased view", so this appears wrong to just use "is". One for
the cleanup AI.

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

Questions? Ask the ACAA Technical Agent