CVS difference for ai05s/ai05-0230-1.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai05s/ai05-0230-1.txt

--- ai05s/ai05-0230-1.txt	2010/10/26 05:39:47	1.2
+++ ai05s/ai05-0230-1.txt	2010/11/17 00:48:50	1.3
@@ -1,6 +1,8 @@
-!standard 3.3.1(10)                                    10-10-25  AI05-0230-1/01
+!standard 3.3.1(10)                                    10-11-16  AI05-0230-1/02
 !standard 3.3.1(21)
 !class Amendment 10-10-25
+!status Amendment 2012 10-11-16
+!status ARG Approved  10-0-0  10-10-30
 !status work item 10-10-25
 !status received 10-10-25
 !priority Low
@@ -9,7 +11,8 @@
 
 !summary
 
-(See proposal.)
+Pre and Post aspects may not be specified for null procedures
+(Pre'Class and Post'Class may be used).
 
 !problem
 
@@ -19,57 +22,51 @@
 it would be possible to inherit two null procedures with different Pre or
 Post aspects. Which one is executed then?
 
-
 !proposal
-
 
+(See wording.)
 
 !wording
 
-AI 05-00145 already includes a (not yet numbered) paragraph beginng with
-   The Pre or Post aspect shall not be specified for an abstract
-   subprogram.
+Modify 13.3.2(9/3) [added by AI05-0145-2]:
 
-Add the following to the end of that paragraph:
-    The Pre or Post aspect shall not be specified for a
-    primitive subprogram of an interface type.
-
-Replace 8.3(12.2/2)
-   If at least one is a subprogram that is neither a null procedure nor
-   an abstract subprogram, and does not require overriding (see 3.9.3),
-   then they override those that are null procedures, abstract
-   subprograms, or require overriding. If more than one such homograph
-   remains that is not thus overridden, then they are all hidden from
-   all visibility.
-
-with
-   An ineffective procedure is defined to be a null procedure which
-   is a primitive operation of an interface type, or an inherited
-   subprogram which corresponds (see 3.4) to an ineffective procedure.
-
-   If at least one is a subprogram that is neither an ineffective
-   procedure nor an abstract subprogram, and does not require
-   overriding (see 3.9.3), then they override those that are ineffective
-   procedures, abstract subprograms, or require overriding. If more than
-   one such homograph  remains that is not thus overridden, then they
-   are all hidden from all visibility.
-
-We should probably also replace the two occurrences of "null procedure"
-in the next paragraph with "ineffective procedure", but this isn't strictly
-needed.
+   The Pre or Post aspect shall not be specified for an abstract
+   subprogram {or a null procedure}. Redunant[Only the Pre'Class
+   and Post'Class aspects may be specified for such a subprogram.]
 
 !discussion
+
+We could try to allow Pre and Post on concrete null procedures and give such
+subprograms preference over those inherited from interfaces. But since a
+null procedure doesn't do anything, we can't quite imagine what the Pre and
+Post aspects would be useful for. One example was suggested (to prevent calls)
+seems to be pushing to runtime a check that ought to be done at compile-time
+(by declaring the subprogram abstract). Since the uses are mostly hacks,
+we decide that it isn't worth the effort to allow these ever.
 
-Are there more cases where we use some mechanism (e.g., a pragma or an aspect
-specification) to cause implicit code generation for a subprogram. pragma
+
+We don't know of any other cases where we use some mechanism (e.g., a pragma or an aspect
+specification) to cause implicit code generation for a subprogram. Pragma
 No_Return is forbidden for a null procedure and an Invariant aspect
 specification is illegal for an abstract type (which includes interface types),
 so these are not problems.
 
+!corrigendum 13.3.2(0)
+
+@dinsc
+
+For a subprogram or entry, the following language-defined aspects may
+be specified with an @fa<aspect_specification>:
 
+[Just to force a conflict, the real text will be in the conflict file.]
 
 !ACATS test
 
+An ACATS B-Test is needed.
+
+!ASIS
+
+There is no ASIS effect to this rule.
 
 !appendix
 

Questions? Ask the ACAA Technical Agent