CVS difference for ai12s/ai12-0407-1.txt
--- ai12s/ai12-0407-1.txt 2020/11/28 07:41:17 1.2
+++ ai12s/ai12-0407-1.txt 2020/12/04 07:59:30 1.3
@@ -1,4 +1,5 @@
-!standard 12.3(15) 20-11-27 AI12-0407-1/02
+!standard 3.3(21) 20-12-03 AI12-0407-1/03
+!standard 12.3(15)
!standard 13.1(8/5)
!standard 13.1(8.1/3)
!standard 13.1.1(17/5)
@@ -7,6 +8,12 @@
!standard A.5.6(15/5)
!standard A.5.7(3/5)
!standard A.5.7(16/5)
+!standard A.18.2(79.2/5)
+!standard A.18.3(50.2/5)
+!standard A.18.5(37.3/5)
+!standard A.18.6(51.4/5)
+!standard A.18.8(58.2/5)
+!standard A.18.9(74.2/5)
!standard H.4.1(1/5)
!standard H.4.1(3/5)
!standard H.4.1(4/5)
@@ -39,6 +46,12 @@
(6) We allow aspects to differ for the replicated actual of a generic formal
type.
+(7) If a name denoting the current instance of a type denotes an object (as
+opposed to a value) then it denotes a variable view of the object.
+
+(8) Stable views of containers do not have Aggregate aspects (and consequently
+do not support aggregates).
+
!problem
(1) AI12-0394-1 added a mechanism to use named numbers with user-defined
@@ -78,6 +91,29 @@
additional Pre and Post assertions to generic formal subprograms, but there
is no allowance for this difference in 12.3(15).
+(7) The list of variable objects in 3.3 (created by AI12-0392-1 as the inverse
+of the previous list) does not mention the current instance of a type. That
+would seem to imply that the following commonly-used idiom is illegal because
+the 'Access attribute reference is of an access-to-variable type:
+
+ package Pkg is
+ type T;
+ type T_Ref (Ref : access T) is null record;
+ type T is limited record
+ Self : T_Ref (T'Access);
+ end record;
+ end Pkg;
+
+The previous list assumed that all current instances of types and subtypes
+were variables, but 8.6(17.1/5) says that current instances in aspect
+specifications represent values (which necessarily are constants).
+
+(8) A stable view of a container is intended to eliminate the need for
+tampering checks by ensuring that no operations that tamper (change the
+size of the container) are supported. This includes Append and Insert.
+However, the stable view types include Aggregate aspects that call
+non-existent Append and Insert routines. That doesn't make sense.
+
!proposal
(1) Add renamings of From_String to From_Universal_Image to both the
@@ -102,12 +138,30 @@
(6) Add an exception to explicitly defined differences for a generic formal
parameter in an instance.
+(7) 8.6(17-17.1) defines some current instances as objects, and others as
+values. The objects should be variable objects, while the values are not
+objects at all and thus cannot be variable. We word the new bullet to reflect
+that.
+
+(8) Remove the aggregate aspects from the stable view type declarations.
+
!wording
[Editor's note: These changes were applied to Draft 27 of the Ada 202x RM,
even though they have not yet been approved, in order that that draft be as
accurate as possible.]
+Replace the deleted 3.3(21) with:
+
+ * the current instance of a type other than a protected type@Redundant[,
+ if the current instance is an object and not a value (see 8.6)];
+
+ AARM Reason: We exclude current instances of protected types
+ as they are protected units and the next bullet applies.
+
+ AARM Proof: This list of bullets only applies to views of objects,
+ so current instances that are not objects are not considered here.
+
Modify 12.3(15):
In an instance, a generic_formal_parameter_declaration declares a view
@@ -208,6 +262,9 @@
(Big_Integers.From_Universal_Image (Num) /
Big_Integers.From_Universal_Image (Den));
+In A.18.2(79.2/5), A.18.3(50.2/5), A.18.5(37.3/5), A.18.6(51.4/5),
+A.18.8(58.2/5), A.18.9(74.2/5), remove the Aggregate aspect.
+
Modify H.4.1(4/5):
If No_Controlled_Parts is True for a type, no component of the type shall have
@@ -277,6 +334,29 @@
that we don't have to revisit this paragraph when defining aspects or other
characteristics in the future.
+(7) We do not want to repeat any of 8.6 in 3.3, it's too messy. So we just
+refer to it to avoid confusion.
+
+The list in 3.3 is roughly in the order that the concepts appear in the
+Standard. So we put "current instance of a type" (from 8.6) before
+"current instance of a protected unit" (mostly 9.4). We exclude protected
+types from the new bullet -- the protected unit rule applies to them.
+
+(8) Container aggregates are generally built up element-by-element into an
+empty container. (Only the indexed aggregates work differently.) This is
+incompatible with the intent of a stable view, which never changes length
+as long as the stable view exists. As such, the only choice is to remove
+the Aggregate attributes.
+
+
+!corrigendum 3.3(21/3)
+
+@drepl
+@xbullet<the object denoted by a @fa<function_call> or an @fa<aggregate>;>
+@dby
+@xbullet<the current instance of a type other than a protected type,
+if the current instance is an object and not a value (see 8.6);>
+
!corrigendum 12.3(15)
@drepl
@@ -380,6 +460,8 @@
@dinsc
See the conflict file for the changes.
+
+!comment The container changes are not shown here.
!corrigendum H.7.1(0)
Questions? Ask the ACAA Technical Agent