CVS difference for ais/ai-00216.txt

Differences between 1.11 and version 1.12
Log of other versions for file ais/ai-00216.txt

--- ais/ai-00216.txt	2003/02/01 04:40:33	1.11
+++ ais/ai-00216.txt	2003/03/04 04:56:21	1.12
@@ -1,6 +1,8 @@
-!standard B.03.03      (00)                         03-01-30  AI95-00216/10
+!standard B.03.03      (00)                         03-02-17  AI95-00216/11
 !standard B.03         (60.2)
 !class amendment 99-03-23
+!status Amendment 200Y 03-02-17
+!status ARG Approved 7-0-1  03-02-07
 !status work item 02-11-06
 !status ARG Approved 6-0-3  02-06-22
 !status work item 99-03-23
@@ -215,22 +217,23 @@
 
               Implementation Permissions
 
-An implementation may require that pragma Controlled is specified for the type
+An implementation may require that pragma Controlled be specified for the type
 of an access subcomponent of an Unchecked_Union type.
 
 Notes
 
 The use of an unchecked union to obtain the effect of an
 unchecked conversion results in erroneous execution (see 11.5).
-Execution of the following example is erroneous:
+Execution of the following example is erroneous even if
+Float'Size = Integer'Size:
 
    type T (Flag : Boolean := False) is
        record
            case Flag is
                when False =>
-                   F1 : Integer := 0;
+                   F1 : Float := 0.0;
                when True =>
-                   F2 : Integer := 1;
+                   F2 : Integer := 0;
            end case;
        end record;
    pragma Unchecked_Union (T);
@@ -413,28 +416,28 @@
 
 @i<@s8<Implementation Permissions>>
 
-An implementation may require that @fa<pragma> Controlled is specified for the
+An implementation may require that @fa<pragma> Controlled be specified for the
 type of an access subcomponent of an Unchecked_Union type.
 
-Notes
-
-The use of an unchecked union to obtain the effect of an
+@xindent<@s9<NOTES@hr
+15 The use of an unchecked union to obtain the effect of an
 unchecked conversion results in erroneous execution (see 11.5).
-Execution of the following example is erroneous:
+Execution of the following example is erroneous even if
+Float'Size = Integer'Size:>>
 
-@xcode<@b<type> T (Flag : Boolean := False) @b<is>
-   @b<record>
-       @b<case> Flag @b<is>
-           @b<when> False =>
-               F1 : Integer := 0;
-           @b<when> True =>
-               F2 : Integer := 1;
-       @b<end case>;
-   @b<end record>;
-@b<pragma> Unchecked_Union (T);
+@xcode<@s9<    @b<type> T (Flag : Boolean := False) @b<is>
+       @b<record>
+           @b<case> Flag @b<is>
+               @b<when> False =@>
+                   F1 : Float := 0.0;
+               @b<when> True =@>
+                   F2 : Integer := 0;
+           @b<end case>;
+        @b<end record>;
+    @b<pragma> Unchecked_Union (T);
 
-X : T;
-Y : Integer := X.F2; -- @i<erroneous>>
+    X : T;
+    Y : Integer := X.F2; -- @i<erroneous>>>
 
 !appendix
 

Questions? Ask the ACAA Technical Agent