CVS difference for ai05s/ai05-0017-1.txt
--- ai05s/ai05-0017-1.txt 2008/11/26 23:58:33 1.6
+++ ai05s/ai05-0017-1.txt 2008/12/30 03:10:08 1.7
@@ -23,21 +23,21 @@
Consider the following:
- procedure Foo is
- package P1 is
- private
- type T1;
- end P1;
- package P2 is
- private
- type T2;
- end P2;
-
- package body P1 is separate;
- package body P2 is separate;
- begin
- ...
- end Foo;
+ procedure Foo is
+ package P1 is
+ private
+ type T1;
+ end P1;
+ package P2 is
+ private
+ type T2;
+ end P2;
+
+ package body P1 is separate;
+ package body P2 is separate;
+ begin
+ ...
+ end Foo;
The rule here seems to say that the stub for P1 freezes both T1 and T2.
T1 surely cannot be meant to be frozen here (else an incomplete type deferred
@@ -66,13 +66,13 @@
We do need to have freezing of incomplete types, because that helps to prevent
premature uses in calls. Consider the following:
- package Stt is
- type T is tagged;
- function F return access T'Class;
- function G (X : access T) return Integer;
- I : Integer := G (F);
- type T is tagged null record;
- end Stt;
+ package Stt is
+ type T is tagged;
+ function F return access T'Class;
+ function G (X : access T) return Integer;
+ I : Integer := G (F);
+ type T is tagged null record;
+ end Stt;
The call to G is dispatching, so we better know the location of the tag
for type T. The profile of G is frozen, which freezes the anonymous access
Questions? Ask the ACAA Technical Agent