CVS difference for arm/source/07.mss

Differences between 1.30 and version 1.31
Log of other versions for file arm/source/07.mss

--- arm/source/07.mss	2001/03/22 18:14:23	1.30
+++ arm/source/07.mss	2004/10/30 21:51:43	1.31
@@ -1,10 +1,10 @@
 @Part(07, Root="ada.mss")
-@Comment{$Date: 2001/03/22 18:14:23 $}
+@Comment{$Date: 2004/10/30 21:51:43 $}
 @Comment{$Source: e:\\cvsroot/ARM/Source/07.mss,v $}
-@Comment{$Revision: 1.30 $}
+@Comment{$Revision: 1.31 $}
@@ -918,7 +918,7 @@
 immediately after the definition of the type,
 except as stated below.
 For a composite type, the characteristics
 (see @RefSecNum{Private Types and Private Extensions})
 of the type are determined in part by the
@@ -934,7 +934,7 @@
 Any additional predefined operators are implicitly declared at that place.
 The corresponding rule applies to a type defined by a
 if there is a place @Chg{New=[immediately within the declarative region in which
@@ -942,7 +942,7 @@
 Old=[within its immediate scope]} where additional
 characteristics of its parent type become visible.
 @Defn{become nonlimited}
 @Defn2{Term=[nonlimited type],Sec=(becoming nonlimited)}
 @Defn2{Term=[limited type],Sec=(becoming nonlimited)}
@@ -954,7 +954,7 @@
 In such a case, the predefined "=" operator is implicitly declared at
 that place, and assignment is allowed after that place.]
 Inherited primitive subprograms follow a different rule.
 For a @nt{derived_type_definition},
 each inherited primitive subprogram
@@ -1113,7 +1113,7 @@
 @key[end] P.Q;
 @Chg{New=[We say @i<immediately> within the declarative region in order that
 types do not gain operations within a nested scope. Consider:],Old=[]}
@@ -1252,6 +1252,13 @@
 (The Constrained attribute of an object has not been moved there.)
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified when additional operations
+are declared.],Old=[]}
 @LabeledClause{Deferred Constants}
@@ -1690,7 +1697,7 @@
 @leading@keepnext@;The following language-defined library package exists:
 @key[package] Ada.Finalization @key[is]@ChildUnit{Parent=[Ada],Child=[Finalization]}
     @key[pragma] Preelaborate(Finalization);@Chg{New=[
     @key[pragma] Remote_Types(Finalization);],Old=[]}
@@ -1760,7 +1767,7 @@
 The same applies to the evaluation of an @nt{allocator},
 as explained in @RefSecNum{Allocators}.
 For an @nt{extension_aggregate} whose @nt{ancestor_part} is a
 @Chg{New=[for each controlled subcomponent of the ancestor part, either
@@ -1798,7 +1805,7 @@
 all. Instead the assignment adjusts B's value;
 that is, it applies Adjust to B.X, B.Y, and B.
 @Chg{New=[The @nt{ancestor_part} of an @nt{extension_aggregate} is handled similarly.],
@@ -1935,7 +1942,7 @@
 @Chg{New=[For an @nt{aggregate} of a controlled type whose value is assigned,
 other than by an @nt{assignment_statement} or a @nt{return_statement}, the
 implementation shall not create a separate anonymous object for the
@@ -2047,6 +2054,21 @@
 (Ada 83 had finalization semantics only for masters of tasks.)
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified that Ada.Finalization is
+a remote types package.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Added wording to clarify that the
+default initialization (whatever that is) of an ancestor part is used.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Clarified that Adjust is never called
+on an aggregate used for the initialization of an object or subaggregate,
+or passed as a parameter.],Old=[]}
 @LabeledSubClause{Completion and Finalization}
@@ -2274,7 +2296,7 @@
 new value, as explained
 in @RefSecNum{User-Defined Assignment and Finalization}.
 @Chg{New=[If the @nt{object_name} in an @nt{object_renaming_declaration}, or
 the actual parameter for a generic formal @key[in out] parameter in a
 @nt{generic_instantiation}, denotes any part of an anonymous object created by
@@ -2316,7 +2338,7 @@
 is not known at the call site.
 @Chg{New=[If a transfer of control or raising of an exception occurs prior to
 performing a finalization of an anonymous object, the anonymous object is
 finalized as part of the finalizations due to be performed for the object's
@@ -2325,7 +2347,7 @@
 @leading@PDefn2{Term=(bounded error),Sec=(cause)}
 It is a bounded error for a call on Finalize or Adjust @Chg{New=[that occurs as
 part of object finalization or assignment ], Old=[]}to propagate an exception.
@@ -2339,7 +2361,7 @@
   (either explicitly or by default)
   are finalized in the usual way.
-  @ChgRef{Version=[1],Kind=[Added],Ref=[8652/0023]}
+  @ChgRef{Version=[1],Kind=[Added],Ref=[8652/0023],ARef=[AI95-00169-01]}
   @Chg{New=[It also is not a bounded error for an explicit call to Finalize or
   Adjust to propagate an exception. We do not want implementations to have to
   treat explicit calls to these routines specially.],Old=[]}
@@ -2349,7 +2371,7 @@
 For a Finalize invoked as part of an @nt<assignment_statement>,
 Program_Error is raised at that point.
 @Chg{New=[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
@@ -2359,7 +2381,7 @@
 Old=[operation]}, any other adjustments due to be performed are performed,
 and then Program_Error is raised.
 @Chg{New=[In the case of assignments that are part of initialization, there is
 no need to complete all adjustments if one propagates an exception, as the
 object will immediately be finalized. So long as a subcomponent is not going
@@ -2373,7 +2395,7 @@
 subcomponents are going to be finalized.],Old=[]}
 @Chg{New=[Even if an Adjust invoked as part of the initialization of a
 controlled object propagates an exception, objects whose initialization
 (including any Adjust or Initialize calls) successfully completed will be
@@ -2386,20 +2408,20 @@
 Unchecked_Deallocation, any other finalizations due to
 be performed are performed, and then Program_Error is raised.
 @Chg{New=[The standard does not specify if storage is recovered in this case.
 If storage is not recovered (and the object continues to exist), Finalize
 may be called on the object again (when the @nt<allocator>'s master is
 @Chg{New=[@Defn2{Term=[Program_Error],Sec=(raised by failure of run-time check)}
 For a Finalize invoked as part of the finalization of the anonymous
 object created by a function call or @nt{aggregate}, any other finalizations
 due to be performed are performed, and then Program_Error is raised.],Old=[]}
 @Chg{New=[@Defn2{Term=[Program_Error],Sec=(raised by failure of run-time check)}
 For a Finalize invoked due to reaching the end of the execution of a
 master, any other finalizations associated with the master are performed, and
@@ -2687,4 +2709,18 @@
 These concepts also needed to be generalized somewhat.
 Task waiting is closely related to user-defined finalization;
 the rules here refer to the task-waiting rules of Section 9.
\ No newline at end of file
+@Chg{Version=[2],New=[@b<Corrigendum:> Fixed the wording to say that anonymous
+objects aren't finalized until the object can't be used anymore.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Added wording to clarify what happens
+when Adjust or Finalize raises an exception; some cases had been omitted.],Old=[]}
+@Chg{Version=[2],New=[@b<Corrigendum:> Stated that if Adjust raises an
+exception during initialization, nothing further is required.],Old=[]}

Questions? Ask the ACAA Technical Agent