CVS difference for ai05s/ai05-0026-1.txt
--- ai05s/ai05-0026-1.txt 2007/04/06 04:37:11 1.2
+++ ai05s/ai05-0026-1.txt 2007/12/13 04:39:35 1.3
@@ -1,7 +1,8 @@
-!standard B.3.3(9/2) 07-04-05 AI05-0026-1/02
+!standard 7.6(9.4/2) 07-11-20 AI05-0026-1/03
+!standard B.3.3(9/2)
!standard B.3.3(10/2)
-!standard B.3.3(12/2)
!class binding interpretation 06-11-13
+!status ARG Approved 8-0-2 06-11-09
!status work item 06-11-13
!status received 06-11-03
!priority Medium
@@ -23,18 +24,9 @@
2 - The !proposal of AI95-00216 explains that "it is illegal to mention a
discriminant explicitly in a component clause", which seems like a good
-idea. However I can't find a rule that would have that effect. I can't
-find anything in the minutes that would indicate that we changed our mind.
+idea. There appears to be no rule that has that effect.
So is it just that we forgot to put the rule in the wording?
-3 - B.3.3(9/2) says that "Any name that denotes a discriminant of an
-object of an unchecked union type shall occur within the declarative
-region of the type". I am not too sure what "a discriminant of an object"
-means. Consider an aggregate in named notation like (D => 2, C => 3.14).
-I would naively think that the name D denotes the discriminant of the
-(anonymous) object for the aggregate. In this case, the above-mentioned
-rule would make the aggregate illegal, which would be obnoxious.
-
!recommendation
(See Summary.)
@@ -43,7 +35,7 @@
Insert after 7.6(9.4/2)
- - it is a private type whose full view needs finalization; or
+ - it is a partial view whose full view needs finalization; or
Replace B.3.3(9/2)
@@ -98,7 +90,7 @@
area anyway, but we don't want to rely on that.
It is intended that this wording should handle the case of a formal private
-type (or a formal private extension) of a formal package. In this example,
+type (or a formal private extension) of a formal package. Consider this example:
declare
generic
@@ -127,7 +119,7 @@
null;
end;
-, the pragma should be rejected even if the implementation is willing
+The pragma should be rejected even if the implementation is willing
to permit I1.T as a C-compatible type (using the freedom granted by B.1(20)).
--------
@@ -140,8 +132,40 @@
Incidentally, it appears that 10.2.1(10.1/2) has problems in this area and
doesn't handle nested generics or generic child units very well.
+
+!corrigendum 7.6(9.4/2)
---!corrigendum A.18.2(239/2)
+@dinsa
+@xbullet<it is a limited type that
+has an access discriminant whose designated type needs finalization; or>
+@dinst
+@xbullet<it is a partial view whose full view needs finalization; or>
+
+!corrigendum B.3.3(9/2)
+
+@drepl
+Any name that denotes a discriminant of an object of an unchecked union type
+shall occur within the declarative region of the type.
+@dby
+Any name that denotes a discriminant of an object of an unchecked union type
+shall occur within the declarative region of the type, and shall not
+occur within a @fa<record_representation_clause>.
+
+!corrigendum B.3.3(10/2)
+
+@drepl
+A component declared in a @fa<variant_part> of an unchecked union type shall
+not have a controlled, protected, or task part.
+@dby
+The type of a component declared in a @fa<variant_part> of an unchecked union
+type shall not need finalization.
+In addition to the places where Legality Rules normally apply (see 12.3),
+this rule also applies in the private part of an instance of a generic unit.
+For an unchecked union type declared within the body of a generic unit, or
+within the body of any of its descendant library units, no part of the type
+of a component declared in a @fa<variant_part> of the unchecked union type shall
+be of a formal private type or formal private extension declared within the
+formal part of the generic unit.
!ACATS test
Questions? Ask the ACAA Technical Agent