CVS difference for ais/ai-00348.txt

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

--- ais/ai-00348.txt	2005/01/28 02:10:48	1.13
+++ ais/ai-00348.txt	2005/06/16 23:47:32	1.14
@@ -1,9 +1,16 @@
-!standard  6.07(01)                                     04-05-27  AI95-00348/07
+!standard  6.07(01)                                     05-05-23  AI95-00348/08
 !standard  3.01(03)
+!standard  3.09.03(1)
+!standard  3.09.03(3)
+!standard  6.01(03)
 !standard  6.01(04)
+!standard  6.01(20)
+!standard  6.01(30)
+!standard  6.01(31)
 !standard  7.06(06)
 !standard  7.06(08)
 !standard  7.06(09)
+!standard  8.03.01(1)
 !standard 12.06(03)
 !standard 12.06(04)
 !standard 12.06(10)
@@ -61,16 +68,40 @@
 
     basic_declaration ::= ... | null_procedure_declaration
 
+Remove "(see 6.1)" from 3.9.3(3).
 
+Add after 3.9.3(11):
+
+The elaboration of an abstract_subprogram_declaration has no effect.
+
+Move 6.1(3) after 3.9.3(1).
+
 Replace 6.1(4):
 
-   procedure_specification ::= procedure defining_program_unit_name parameter_profile
-   function_specification ::= function defining_designator parameter_and_result_profile
    subprogram_specification ::=
      procedure_specification
    | function_specification
 
+   procedure_specification ::= procedure defining_program_unit_name parameter_profile
+
+   function_specification ::= function defining_designator parameter_and_result_profile
+
+Change 6.1(20):
+
+   ... A completion is not allowed for an abstract_subprogram_declaration {or a
+   null_procedure_declaration (see 6.7)}.
+
+Add to the end of 6.1(30):
+
+Similarly, a procedure defined by a
+null_procedure_declaration is a null procedure; a procedure declared by
+a subprogram_declaration is not. See 6.7, "Null Procedures".
+
+Replace 6.1(31) by
 
+The elaboration of a subprogram_declaration has no effect.
+
+
 Add a new clause 6.7:
 
 6.7  Null Procedures
@@ -80,7 +111,9 @@
 
                               Syntax
 
-    null_procedure_declaration ::= procedure_specification IS NULL;
+    null_procedure_declaration ::=
+       [overriding_indicator]
+       procedure_specification IS NULL;
 
                               Static Semantics
 
@@ -112,6 +145,9 @@
     The (default) implementations of Initialize, Adjust, and Finalize
     have no effect.
 
+Add "null_procedure_declaration" to the list in the paragraphs added after
+8.3.1(1) by AI-218-3.
+
 Add to 12.6(3)
     subprogram_default ::= ... | null
 
@@ -270,6 +306,50 @@
    | renaming_declaration | exception_declaration
    | generic_declaration | generic_instantiation>>
 
+!corrigendum 3.09.03(1)
+
+@dinsa
+An @i<abstract type> is a tagged type intended for use as a parent type for
+type extensions, but which is not allowed to have objects of its own. An
+@i<abstract subprogram> is a subprogram that has no body, but is intended to be
+overridden at some point when inherited. Because objects of an abstract type
+cannot be created, a dispatching call to an abstract subprogram always
+dispatches to some overriding body.
+@dinst
+@i<@s8<Syntax>>
+@xcode<@fa<abstract_subprogram_declaration ::=
+    [overriding_indicator]
+    subprogram_specification >@ft<@b<is abstract>>@fa<;>>
+
+!corrigendum 3.09.03(3)
+
+@drepl
+A subprogram declared by an @fa<abstract_subprogram_declaration> (see 6.1)
+is an @i<abstract subprogram>. If it is a primitive subprogram of a tagged
+type, then the tagged type shall be abstract.
+@dby
+A subprogram declared by an @fa<abstract_subprogram_declaration>
+is an @i<abstract subprogram>. If it is a primitive subprogram of a tagged
+type, then the tagged type shall be abstract.
+
+!corrigendum 3.09.03(11)
+
+@dinsa
+A generic actual subprogram shall not be an abstract subprogram.
+The @fa<prefix> of an @fa<attribute_reference> for the Access,
+Unchecked_Access, or Address attributes shall not denote an abstract
+subprogram.
+@dinst
+@i<@s8<Dynamic Semantics>>
+
+The elaboration of an @fa<abstract_subprogram_declaration> has no effect.
+
+
+!corrigendum 6.1(3)
+
+@ddel
+@xcode<@fa<abstract_subprogram_declaration ::= subprogram_specification >@ft<@b<is abstract>>@fa<;>>
+
 !corrigendum 6.1(4)
 
 @drepl
@@ -277,14 +357,51 @@
      >@ft<@b<procedure>>@fa< defining_program_unit_name parameter_profile
    | >@ft<@b<function>>@fa< defining_designator parameter_and_result_profile>>
 @dby
+@xcode<@fa<subprogram_specification ::=
+     procedure_specification
+   | function_specification>>
+
 @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
-   | function_specification>>
 
+!corrigendum 6.1(20)
+
+@drepl
+A @fa<subprogram_declaration> or a @fa<generic_subprogram_declaration> requires
+a completion: a body, a @fa<renaming_declaration> (see 8.5), or a @b<pragma>
+Import (see B.1). A completion is not allowed for an
+@fa<abstract_subprogram_declaration>.
+@dby
+A @fa<subprogram_declaration> or a @fa<generic_subprogram_declaration> requires
+a completion: a body, a @fa<renaming_declaration> (see 8.5), or a @fa<pragma>
+Import (see B.1). A completion is not allowed for an
+@fa<abstract_subprogram_declaration> (see 3.9.3) or a
+@fa<null_procedure_declaration> (see 6.7).
+
+!corrigendum 6.1(30)
+
+@drepl
+A subprogram declared by an @fa<abstract_subprogram_declaration> is abstract;
+a subprogram declared by a @fa<subprogram_declaration> is not. See 3.9.3,
+"Abstract Types and Subprograms".
+@dby
+A subprogram declared by an @fa<abstract_subprogram_declaration> is abstract;
+a subprogram declared by a @fa<subprogram_declaration> is not. See 3.9.3,
+"Abstract Types and Subprograms". Similarly, a procedure defined by a
+@fa<null_procedure_declaration> is a null procedure; a procedure declared by
+a @fa<subprogram_declaration> is not. See 6.7, "Null Procedures".
+
+!corrigendum 6.1(31)
+
+@drepl
+The elaboration of a @fa<subprogram_declaration> or an
+@fa<abstract_subprogram_declaration> has no effect.
+@dby
+The elaboration of a @fa<subprogram_declaration> has no effect.
+
+
 !corrigendum 6.7(1)
 
 @dinsc
@@ -294,7 +411,9 @@
 
 @i<@s8<Syntax>>
 
-@xcode<@fa<null_procedure_declaration ::= procedure_specification >@ft<@b<is null>>@fa<;>>
+@xcode<@fa<null_procedure_declaration ::=
+   [overriding_indicator]
+   procedure_specification >@ft<@b<is null>>@fa<;>>
 
 @i<@s8<Static Semantics>>
 
@@ -307,6 +426,8 @@
 For the execution of a subprogram call on a null procedure, the execution of
 the @fa<subprogram_body> has no effect.
 
+The elaboration of a @fa<null_procedure_declaration> has no effect.
+
 !corrigendum 7.6(6)
 
 @drepl
@@ -350,6 +471,13 @@
 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  8.3.1(1)
+!comment Dummy to force a conflict.
+@drepl
+Nothing
+@dby
+Everthing.
 
 !corrigendum 12.6(3)
 

Questions? Ask the ACAA Technical Agent