CVS difference for ai12s/ai12-0155-1.txt

Differences between 1.3 and version 1.4
Log of other versions for file ai12s/ai12-0155-1.txt

--- ai12s/ai12-0155-1.txt	2015/03/18 04:14:45	1.3
+++ ai12s/ai12-0155-1.txt	2015/03/26 23:35:45	1.4
@@ -1,4 +1,4 @@
-!standard 13.14(3/4)                                   15-03-17  AI05-0155-1/02
+!standard 13.14(3/4)                                   15-03-26  AI05-0155-1/03
 !class binding interpretation 15-02-20
 !status work item 15-02-20
 !status received 15-02-20
@@ -37,7 +37,7 @@
    end Pack; -- Freezing here.
-13.14(3/4) [and earlier versions as well] says that everything exception
+13.14(3/4) [and earlier versions as well] says that everything excepting
 incomplete types are frozen at the end of Pack. This includes the profiles of
 any subprograms declared within Pack.
@@ -69,18 +69,9 @@
 entry_body causes freezing of each entity and profile declared before it within
 the same declarative_part that is not an incomplete type; it only causes
 freezing of an incomplete type if the body is within the immediate scope of the
-incomplete type. {Freezing of a profile in these cases only freezes an incomplete
-subtype of the profile if the corresponding incomplete type would be frozen.}
+incomplete type. {Freezing of a profile in these cases does not freeze an incomplete
+subtype of the profile.}
-[RLB Note: I'm not sure we need the exception here; perhaps the simpler
-"Freezing of a profile in these cases only freezes subtypes of the profile that
-are not incomplete." is sufficient. I included the exception for the cases in
-the latter rule where the incomplete type is indeed frozen; however, I think
-that in such cases the incomplete type is frozen itself and thus it doesn't
-matter whether freezing the profile freezes it as well. Steve perhaps can
-create a counter-example where the type isn't frozen but a profile containing
-it is. If not, then it's impossible. ;-)]
 13.14(3/4) has an explicit “hole” so that incomplete types whose completion is
@@ -109,6 +100,23 @@
 ordinary (not Taft-Amendment) incomplete types. (Taft-Amendment incomplete
 types can't have primitive operations, so no dispatching calls can be made
 on an operations of them.)
+Therefore, we only exclude freezing of incomplete types in contexts where
+no further premature calls can be made (the "global freezing contexts", or
+dispatching calls are impossible for other reasons.
+Notes on the 13.14(3/4) wording:
+We only need to say that incomplete types of the profile are not frozen. If
+the incomplete type is not one that is exempt from freezing, it will
+necessarily be frozen as well by one of these "global freezing contexts", and
+thus we don't need to specifically include those in profile freezing.
+The wording "subtype of a profile" seems a bit non-specific, but it echos the
+wording of 13.14(14/3) [which is the normal case for freezing a profile]. There
+is no reason for this to be different.

Questions? Ask the ACAA Technical Agent