CVS difference for ais/ai-00348.txt

Differences between 1.5 and version 1.6
Log of other versions for file ais/ai-00348.txt

--- ais/ai-00348.txt	2003/09/25 01:49:13	1.5
+++ ais/ai-00348.txt	2003/10/29 00:40:58	1.6
@@ -1,4 +1,4 @@
-!standard  6.07(00)                                     03-09-05  AI95-00348/04
+!standard  6.07(00)                                     03-10-23  AI95-00348/05
 !standard  3.01(09)
 !standard  7.06(06)
 !standard  7.06(08)
@@ -8,6 +8,8 @@
 !standard 12.06(10)
 !standard 12.06(16)
 !class amendment 03-09-02
+!status Amendment 200Y 03-10-23
+!status ARG Approved 10-0-0  03-10-04
 !status work item 03-09-02
 !status received 03-09-02
 !priority Medium
@@ -37,7 +39,7 @@
 Null procedures are a prerequisite for AI-251 (abstract interfaces); see
 the discussion section below.
 
-They would also be useful in the specification of Ada.Finalization.
+They are also be useful in the specification of Ada.Finalization.
 
 !proposal
 
@@ -97,10 +99,10 @@
     the profile given in the formal_subprogram_declaration.
 
 Add after 12.6(16)
+    A null procedure as a subprogram default has convention Intrinsic
+    (see 6.3.1).
 
-    If a generic unit has a subprogram_default specified by the reserved word
-    null, then in an instance where the corresponding actual parameter is
-    omitted, the formal subprogram has convention Intrinsic (see 6.3.1).
+AARM Proof: This follows from 6.3.1(7).
 
 !discussion
 
@@ -119,8 +121,7 @@
 a scalar out parameter); it is only the "execution of the subprogram_body"
 step of the call which has no effect.
 
-The proposed changes to Ada.Finalization are not an essential part of this
-AI.
+The changes to Ada.Finalization are not an essential part of this AI.
 
 Although the primary motivation for null procedures is for use with interface
 types (AI-251), they are also useful in other contexts. For code in a generic
@@ -197,8 +198,121 @@
     package Pkg is
       procedure Proc is null;
     end Pkg;
+
+!corrigendum 3.01(03)
 
---!corrigendum H.00(00)
+@drepl
+@xcode<@fa<basic_declaration ::=
+     type_declaration | subtype_declaration
+   | object_declaration | number_declaration
+   | subprogram_declaration | abstract_subprogram_declaration
+   | package_declaration | renaming_declaration
+   | exception_declaration | generic_declaration
+   | generic_instantiation>>
+@dby
+@xcode<@fa<basic_declaration ::=
+     type_declaration | subtype_declaration
+   | object_declaration | number_declaration
+   | subprogram_declaration | abstract_subprogram_declaration
+   | null_procedure_declaration | package_declaration
+   | renaming_declaration | exception_declaration
+   | generic_declaration | generic_instantiation>>
+
+!corrigendum 6.7(1)
+
+@dinsc
+
+@i<@s8<Syntax>>
+
+@xcode<@fa<null_procedure_declaration ::= procedure_specification >@ft<@b<is null>>@fa<;>>
+
+@i<@s8<Static Semantics>>
+
+A @fa<null_procedure_declaration> declares a @i<null procedure>.
+
+@i<@s8<Dynamic Semantics>>
+
+The execution of a null procedure is invoked by a subprogram call.
+The execution of the @fa<subprogram_body> of a null procedure has no effect.
+
+!corrigendum 7.6(6)
+
+@drepl
+@xcode<    @b<procedure> Initialize (Object : @b<in out> Controlled);
+    @b<procedure> Adjust   (Object : @b<in out> Controlled);
+    @b<procedure> Finalize (Object : @b<in out> Controlled);>
+@dby
+@xcode<    @b<procedure> Initialize (Object : @b<in out> Controlled) @b<is null>;
+    @b<procedure> Adjust     (Object : @b<in out> Controlled) @b<is null>;
+    @b<procedure> Finalize   (Object : @b<in out> Controlled) @b<is null>;>
+
+!corrigendum 7.6(8)
+
+@drepl
+@xcode<    @b<procedure> Initialize (Object : @b<in out> Limited_Controlled);
+    @b<procedure> Finalize (Object : @b<in out> Limited_Controlled);
+@b<private>
+    ... -- @i<not specified by the language>
+@b<end> Ada.Finalization;>
+@dby
+@xcode<    @b<procedure> Initialize (Object : @b<in out> Limited_Controlled) @b<is null>;
+    @b<procedure> Finalize   (Object : @b<in out> Limited_Controlled) @b<is null>;
+@b<private>
+    ... -- @i<not specified by the language>
+@b<end> Ada.Finalization;>
+
+!corrigendum 7.6(9)
+
+@drepl
+A controlled type is a descendant of Controlled or Limited_Controlled. The
+(default) implementations of Initialize, Adjust, and Finalize have no effect.
+The predefined "=" operator of type Controlled always returns True, since this
+operator is incorporated into the implementation of the predefined equality
+operator of types derived from Controlled, as explained in 4.5.2. The type
+Limited_Controlled is like Controlled, except that it is limited and it lacks
+the primitive subprogram Adjust.
+@dby
+A controlled type is a descendant of Controlled or Limited_Controlled. The
+predefined "=" operator of type Controlled always returns True, since this
+operator is incorporated into the implementation of the predefined equality
+operator of types derived from Controlled, as explained in 4.5.2. The type
+Limited_Controlled is like Controlled, except that it is limited and it lacks
+the primitive subprogram Adjust.
+
+!corrigendum 12.6(3)
+
+@drepl
+@xcode<@fa<subprogram_default ::= default_name | <@>>>
+@dby
+@xcode<@fa<subprogram_default ::= default_name | <@> | >@ft<@b<null>>>
+
+!corrigendum 12.6(4)
+
+@dinsa
+@xcode<@fa<default_name ::= name>>
+@dinst
+A @fa<subprogram_default> of @b<null> shall not be specified for a formal
+function.
+
+!corrigendum 12.6(10)
+
+@dinsa
+If a generic unit has a @fa<subprogram_default> specified by a box, and the
+corresponding actual parameter is omitted, then it is equivalent to an explicit
+actual parameter that is a usage name identical to the defining name of the
+formal.
+@dinst
+If a generic unit has a @fa<subprogram_default> specified by the reserved word
+@b<null>, and the corresponding actual parameter is omitted, then it is
+equivalent to an explicit actual parameter that is a null procedure having
+the profile given in the @fa<formal_subprogram_declaration>.
+
+!corrigendum 12.6(16)
+
+@dinsa
+The actual subprogram cannot be abstract (see 3.9.3).
+@dinst
+A null procedure as a subprogram default has convention Intrinsic (see 6.3.1).
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent