CVS difference for ais/ai-00256.txt

Differences between 1.3 and version 1.4
Log of other versions for file ais/ai-00256.txt

--- ais/ai-00256.txt	2001/03/15 23:54:52	1.3
+++ ais/ai-00256.txt	2001/03/22 18:18:02	1.4
@@ -1,4 +1,4 @@
-!standard 13.11.01 (01)                                01-03-15  AI95-00256/02
+!standard 13.11.01 (01)                                01-03-22  AI95-00256/03
 !standard  A.12.01 (30)
 !standard  G.02.02 (03)
 !class binding interpretation 01-02-12
@@ -25,6 +25,9 @@
 3) The rule of 3.5.8(2/1) applies in G.2.2(3) as well. (Otherwise the RM is
 inconsistent.)
 
+4) The first sentence of 7.6.1(16/1) applies to all calls to Adjust other than
+those in assignment statements.
+
 !question
 
 1)
@@ -54,6 +57,12 @@
 'Model_Mantissa. But it does not fix G.2.2(3), which
 contains essentially the same formula. Was this intended? (No.)
 
+4)
+The rule of 7.6.1(16/1) defines what happens for assignment statements
+and for initializations, but what about other kinds of assignment operations
+(such as generic object creation, 12.4(11))? Shouldn't they be treated the
+same as initializations? (Yes.)
+
 !recommendation
 
 (See summary.)
@@ -81,6 +90,33 @@
 specified in 3.5.8(2/1). The failure to change the related paragraph G.2.2(3)
 as well is just an oversight.
 
+4)
+Defect Report 8652/0024 clearly differentiates between "assignment statements"
+and "initialization by assignment". It never discusses anything that isn't
+one or the other; the authors appearently thought that there were no other
+possibilities. All of the other cases of assignment operations are very
+similar to "initialization", and thus should be treated the same way; this
+was the expectation of the authors of the previous report.
+Thus, the wording of the first sentence is too narrow, and should be broadened.
+
+!corrigendum 7.06.01(16)
+
+@drepl
+@xbullet<For an Adjust invoked as part of the initialization of a controlled
+object, other adjustments due to be performed might or might not be performed,
+and then Program_Error is raised. During its propagation, finalization might or
+might not be applied to objects whose Adjust failed. For an Adjust invoked
+as part of an assignment statement, any other adjustments due to be performed
+are performed, and then Program_Error is raised.>
+@dby
+@xbullet<For an Adjust invoked as part of assignment operations other than those
+invoked as part of an assignment statment, other adjustments due to be performed
+might or might not be performed, and then Program_Error is raised.
+During its propagation, finalization might or might not be applied to objects
+whose Adjust failed. For an Adjust invoked as part of an assignment statement,
+any other adjustments due to be performed are performed, and then Program_Error
+is raised.>
+
 !corrigendum 13.11.01(03)
 
 @drepl
@@ -170,5 +206,53 @@
 contains essentially the same formula.
 
 Oh well...
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Wednesday, March 21, 2001 9:47 PM
+
+> |16/1 {For an Adjust invoked as part of the initialization of a controlled
+> |      object, other adjustments due to be performed might or might not be
+> |      performed, and then Program_Error is raised.  During its propagation,
+> |      finalization might or might not be applied to objects whose Adjust
+> |      failed.}  For an Adjust invoked as part of an assignment operation,
+> |      any other adjustments due to be performed are performed, and then
+> |      Program_Error is raised.
+>
+> > [STT]  The second sentence should read:
+> > >      For an Adjust invoked as part of an assignment *statement*, ...
+> >
+> > I'll add this to the "Wording changes no one will argue with" AI.
+>
+> Au contraire!?
+> Tuck's refinement leaves holes, no?--in that his syntactic denotation
+> is less inclusive than "assignment operation outside of initialization"
+> --e.g., 12.4(11)'s allowance for adjustment!?  Is this right/safe/desired?
+
+The assignment in 12.4(11) is an assignment as part of
+initialization (of a generic formal in obj), and should follow the
+rules for adjusts as part of initialization.
+
+Assignment statements are special because they occur after the
+target object has been fully initialized, and if they fail, the target object
+is still going to be fully finalized, so you don't want to stop
+adjusting just because one component's adjust fails.
+
+Of course, I know that 12.4(11) is an initialization, and maybe you
+know it too, but is it clear from the RM?  I'm not sure.
+
+Paragraph 16/1 might be better put in terms of "adjusts as part of
+assignment operation other than an assignment statment," and "adjusts
+as part of the assignment operation of an assignment statement."
+What a mouthful...
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, March 22, 2001 11:42 AM
+
+My main concern at this point is to get "correct" wording, not necessarily
+"best" wording.
 
 ****************************************************************

Questions? Ask the ACAA Technical Agent