CVS difference for ais/ai-00348.txt

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

--- ais/ai-00348.txt	2004/04/16 23:16:37	1.10
+++ ais/ai-00348.txt	2004/05/29 00:38:39	1.11
@@ -1,4 +1,4 @@
-!standard  6.07(00)                                     04-04-05  AI95-00348/06
+!standard  6.07(00)                                     04-05-27  AI95-00348/07
 !standard  3.01(09)
 !standard  6.01(04)
 !standard  7.06(06)
@@ -63,11 +63,11 @@
 
 Replace 6.1(4):
 
-   procedure_specification ::= PROCEDURE defining_program_unit_name
-                                         parameter_profile
+   procedure_specification ::= procedure defining_program_unit_name parameter_profile
+   function_specification ::= function defining_designator parameter_and_result_profile
    subprogram_specification ::=
      procedure_specification
-   | function defining_designator  parameter_and_result_profile
+   | function_specification
 
 
 Add a new clause 6.7:
@@ -138,7 +138,9 @@
 abstract types that have null (non-abstract) default implementations of some of
 their primitives to be transitioned to being interface types. An example of
 such a type is Ada.Finalization.Controlled. There are other considerations
-which argue for leaving Controlled as a "normal" tagged type, but the
+which argue for leaving Controlled as a "normal" tagged type (especially the
+fact that many implementations use data components for linking in all
+controlled objects, but such data is not allowed for interfaces), but the
 capability of switching other existing abstract tagged types to be interfaces
 remains potentially quite useful.
 
@@ -156,7 +158,8 @@
 operation. This is the paradigm used for finalization, for example,
 and is quite common in type hierarchies in general.
 
-    For example:
+For example:
+
          type T is interface;
          procedure Prim1(X : T) is null;
          procedure Prim2(X : T) is abstract;
@@ -194,16 +197,27 @@
   end Pkg3;
 
 Null procedures are distinct subprograms in the sense of 4.5.2(13), so as
-a consequence the Boolean Eq must be false.
+a consequence the Boolean Eq must be False.
+
+A null procedure is also allowed as a generic default. For example:
+
+    generic
+      with procedure Proc is null;
+    package G is
+      ...
+    end G;
+
+    package I is new G;
 
+In instance package I, calling Proc has no effect.
+
 The convention of a formal procedure whose default is null and whose actual is
 omitted is Intrinsic. This follows from 6.3.1(7). Thus we don't have to worry
 about access issues for such formal subprograms.
 
 Like an instantiation, a null procedure is not allowed as a completion.
 Allowing this would double the amount of RM text needed for no real gain.
-
-Like an instantiation, a null procedure does not "require completion".
+Also like an instantiation, a null procedure does not "require completion".
 
 A null procedure may have OUT-mode parameters, just as a regular procedure may.
 Since
@@ -259,14 +273,16 @@
 
 @drepl
 @xcode<@fa<subprogram_specification ::=
-     >@ft<@b<procedure>>@fa< defining_program_unit_name  parameter_profile
-   | >@ft<@b<function>>@fa< defining_designator  parameter_and_result_profile>>
+     >@ft<@b<procedure>>@fa< defining_program_unit_name parameter_profile
+   | >@ft<@b<function>>@fa< defining_designator parameter_and_result_profile>>
 @dby
 @xcode<@fa<procedure_specification ::= >@ft<@b<procedure>>@fa< defining_program_unit_name parameter_profile>>
 
+@xcode<@fa<function_specification ::= >@ft<@b<function>>@fa< defining_designator parameter_and_result_profile>>
+
 @xcode<@fa<subprogram_specification ::=
      procedure_specification
-   | >@ft<@b<function>>@fa< defining_designator  parameter_and_result_profile>>
+   | function_specification>>
 
 !corrigendum 6.7(1)
 
@@ -365,9 +381,10 @@
 !corrigendum 12.6(16)
 
 @dinsa
-The actual subprogram cannot be abstract (see 3.9.3).
+@xindent<@s9<18  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).
+@xindent<@s9<19  A null procedure as a subprogram default has convention Intrinsic
+(see 6.3.1).>>
 
 !ACATS test
 

Questions? Ask the ACAA Technical Agent