CVS difference for ai12s/ai12-0226-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai12s/ai12-0226-1.txt

--- ai12s/ai12-0226-1.txt	2018/04/10 02:42:56	1.2
+++ ai12s/ai12-0226-1.txt	2018/07/11 20:49:40	1.3
@@ -1,9 +1,11 @@
-!standard 3.3(11.1/3)                                  18-04-09  AI12-0226-1/02
+!standard 3.3(11.1/3)                                  18-06-10  AI12-0226-1/03
 !standard 3.3(21.1/3)
-!standard 3.3(23.7/3)
+!standard 3.3(23.8/5)
 !standard 4.6(58.1/4)
 !standard 4.6(58.3/4)
 !class Amendment 17-04-18
+!status Amendment 1-2012 18-07-10
+!status ARG Approved 7-1-2  18-06-23
 !status work item 17-04-18
 !status received 17-03-23
 !priority Low
@@ -11,12 +13,12 @@
 !subject Make objects more consistent
 !summary
 
-Value conversions of an object is an object in order to be consistent with 
-qualified expressions.
+A value conversion of an object is an object in order to be consistent with 
+a qualified expression.
 
 !problem
 
-Ada 2012 made qualified expressions "name"s, and qualified expressions of
+Ada 2012 made a qualified expression a "name", and a qualified expression of
 an object is an object. This created an unusual situation where a single
 character makes a difference between constructs usually considered equivalent:
 
@@ -27,7 +29,7 @@
     Ren3 : Natural renames Natural(Max); -- Illegal, not object. (A value
                                          --    conversion is not an object.)
 
-This inconsistency in the language is easily repaired.
+We can make qualified expression and value conversion be more regular.
 
 !proposal
 
@@ -39,7 +41,7 @@
 
 Modify 3.3(11.1/3):
 
-* a {value conversion} or qualified_expression whose operand denotes an object;
+* a {value conversion or }qualified_expression whose operand denotes an object;
 
 [The definition of constants:]
 
@@ -49,22 +51,21 @@
 
 [The definition of known to be constrained:]
 
-Modify 3.3(23.7/3):
+Modify 3.3(23.8/5):
 
-* it is part of the object denoted by a {value conversion, }function_call{,}
-  or aggregate; or
+* it is a {value conversion or }qualified_expression where the operand denotes
+  a view of a composite object that is known to be constrained; or
 
 Modify 4.6(58.1/4):
 
-Evaluation of a value conversion [of a composite type] either creates a 
-{new value, a }new anonymous object Redundant[(similar to the object
-created by the evaluation of an aggregate or a function call)]{,} or
+Evaluation of a value conversion [of a composite type]{of an object} either 
+creates a new anonymous object Redundant[(similar to the object
+created by the evaluation of an aggregate or a function call)] or
 yields a new view of the operand object without creating a new object:
 
 Add after 4.6(58.3/4):
 
-If the target type is an elementary type and the operand is an object, then
-a new object is created;
+If the target type is an elementary type, then a new object is created;
 
 Add after AARM 4.6(58.b.1/4):
 
@@ -73,8 +74,11 @@
 operator. Generally, whether the object exists can only be detected if it
 is renamed (unless the type is controlled).
 
-AARM Discussion: We allow creating a value in those cases where the ultimate
-result is not an object (such as a value conversion of a named number).
+AARM Discussion: This set of rules does not apply in those cases where the 
+operand is not an object (such as a value conversion of a named 
+number); in such cases, the result isn't an object, so it isn't necessary
+to describe what that means. The rules cover all value conversions of 
+composite types (since there aren't any separate values of composite types).
 
 !discussion
 
@@ -115,6 +119,57 @@
 "expression" as well as "object" and "value", but that would require extensive
 surgery to the Standard, so it is is not simple and is covered in a separate
 AI - AI12-0270-1.
+
+!corrigendum 3.3(11/3)
+
+@drepl
+@xbullet<a @fa<qualified_expression> whose operand denotes an object;>
+@dby
+@xbullet<a value conversion or @fa<qualified_expression> whose operand 
+denotes an object;>
+
+!corrigendum 3.3(21/3)
+
+@drepl
+@xbullet<the result of evaluating a @fa<qualified_expression>;>
+@dby
+@xbullet<the result of evaluating a value conversion or 
+@fa<qualified_expression>;>
+
+
+!corrigendum 3.3(23.7/3)
+
+@dinsa
+@xbullet<it is part of the object denoted by a @fa<function_call> or
+@fa<aggregate>; or>
+@dinst
+@xbullet<it is a value conversion or @fa<qualified_expression> where the 
+operand denotes a view of a composite object that is known to be constrained; or>
+
+!corrigendum 4.6(58.1/4)
+
+@drepl
+Evaluation of a value conversion of a composite type either
+creates a new anonymous object (similar to the object
+created by the evaluation of an @fa<aggregate> or a function call) or
+yields a new view of the operand object without creating
+a new object:
+@dby
+Evaluation of a value conversion of an object either
+creates a new anonymous object (similar to the object
+created by the evaluation of an @fa<aggregate> or a function call) or
+yields a new view of the operand object without creating
+a new object:
+
+!corrigendum 4.6(58.3/4)
+
+@dinsa
+@xbullet<If the target type is an array type having aliased components and the 
+operand type is an array type having unaliased components, then a new object 
+is created;>
+@dinst
+@xbullet<If the target type is an elementary type, then a new object is
+created;>
 
 !ASIS
 

Questions? Ask the ACAA Technical Agent