]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type only.
authorRobert Dewar <dewar@adacore.com>
Mon, 14 Oct 2013 12:45:14 +0000 (12:45 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 14 Oct 2013 12:45:14 +0000 (14:45 +0200)
2013-10-14  Robert Dewar  <dewar@adacore.com>

* einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type
only.
* exp_aggr.adb (Expand_Array_Aggregate): Handle proper
initialization of <> component.
* exp_ch3.adb, exp_tss.adb: Minor reformatting
* sem_ch13.adb (Default_Aspect_Component_Value, Default_Aspect_Value):
Is on base type only.
* sinfo.ads: Minor comment revision.

2013-10-14  Robert Dewar  <dewar@adacore.com>

* g-decstr.adb (Decode_Wide_Wide_Character): Fix failure
to detect invalid sequences where longer than necessary
sequences are used for encoding.
(Validate_Wide_Character):
Call Decode_Wide_Character to get the above validations.
(Validate_Wide_Wide_Character): Same fix
* g-decstr.ads: Add documentation making it clear that the UTF-8
implementation here recognizes all valid UTF-8 sequences, rather
than the well-formed subset corresponding to characters defined
in Unicode.
(Next_Wide_Character): Remove comment about this
being more efficient than Decode_Wide_Character (because this
no longer the case).
(Prev_Wide_Character): Add note that valid encoding is assumed.

2013-10-14  Robert Dewar  <dewar@adacore.com>

* a-wichha.adb (Character_Set_Version): New function.
* a-wichha.ads: Remove comments for pragma Pure (final RM has
this).
(Character_Set_Version): New function.
* gnat_rm.texi: Update doc.

From-SVN: r203527

13 files changed:
gcc/ada/ChangeLog
gcc/ada/a-wichha.adb
gcc/ada/a-wichha.ads
gcc/ada/einfo.adb
gcc/ada/einfo.ads
gcc/ada/exp_aggr.adb
gcc/ada/exp_ch3.adb
gcc/ada/exp_tss.adb
gcc/ada/g-decstr.adb
gcc/ada/g-decstr.ads
gcc/ada/gnat_rm.texi
gcc/ada/sem_ch13.adb
gcc/ada/sinfo.ads

index af254c97de90907035eeae9247b8a31dc4ce1d47..567d644f188ccd867568c27aefc6601c6324dd02 100644 (file)
@@ -1,3 +1,39 @@
+2013-10-14  Robert Dewar  <dewar@adacore.com>
+
+       * einfo.ads, einfo.adb (Default_Aspect_Component_Value): Is on base type
+       only.
+       * exp_aggr.adb (Expand_Array_Aggregate): Handle proper
+       initialization of <> component.
+       * exp_ch3.adb, exp_tss.adb: Minor reformatting
+       * sem_ch13.adb (Default_Aspect_Component_Value, Default_Aspect_Value):
+       Is on base type only.
+       * sinfo.ads: Minor comment revision.
+
+2013-10-14  Robert Dewar  <dewar@adacore.com>
+
+       * g-decstr.adb (Decode_Wide_Wide_Character): Fix failure
+       to detect invalid sequences where longer than necessary
+       sequences are used for encoding.
+       (Validate_Wide_Character):
+       Call Decode_Wide_Character to get the above validations.
+       (Validate_Wide_Wide_Character): Same fix
+       * g-decstr.ads: Add documentation making it clear that the UTF-8
+       implementation here recognizes all valid UTF-8 sequences, rather
+       than the well-formed subset corresponding to characters defined
+       in Unicode.
+       (Next_Wide_Character): Remove comment about this
+       being more efficient than Decode_Wide_Character (because this
+       no longer the case).
+       (Prev_Wide_Character): Add note that valid encoding is assumed.
+
+2013-10-14  Robert Dewar  <dewar@adacore.com>
+
+       * a-wichha.adb (Character_Set_Version): New function.
+       * a-wichha.ads: Remove comments for pragma Pure (final RM has
+       this).
+       (Character_Set_Version): New function.
+       * gnat_rm.texi: Update doc.
+
 2013-10-14  Hristian Kirtchev  <kirtchev@adacore.com>
 
        * einfo.adb: Flag263 is now known as Has_Null_Refinement.
index 8cdc7efb40072c01fcbfc0e0a25a7382cfcaa26b..6692cbf445ffe932a2e1c63d1b009c8d27636a80 100644 (file)
@@ -33,6 +33,11 @@ with Ada.Wide_Characters.Unicode; use Ada.Wide_Characters.Unicode;
 
 package body Ada.Wide_Characters.Handling is
 
+   function Character_Set_Version return String is
+   begin
+      return "Unicode 6.2";
+   end Character_Set_Version;
+
    ---------------------
    -- Is_Alphanumeric --
    ---------------------
index 7964756e5be9a4a9f25da512cbe7e866a708d6d7..583308ec6a0c3fdbf0b4527d41bb8db7d8a00e52 100644 (file)
 
 package Ada.Wide_Characters.Handling is
    pragma Pure;
-   --  This package is clearly intended to be Pure, by analogy with the
-   --  base Ada.Characters.Handling package. The version in the RM does
-   --  not yet have this pragma, but that is a clear omission. This will
-   --  be fixed in a future version of AI05-0266-1.
+
+   function Character_Set_Version return String;
+   pragma Inline (Character_Set_Version);
+   --  Returns an implementation-defined identifier that identifies the version
+   --  of the character set standard that is used for categorizing characters
+   --  by the implementation. For GNAT this is "Unicode v.v".
 
    function Is_Control (Item : Wide_Character) return Boolean;
    pragma Inline (Is_Control);
index a78452dd93eab2e9e8e6131b07543700ff5da552..8b6b3614b4733c7ba837730012579fd9100dcac5 100644 (file)
@@ -853,13 +853,13 @@ package body Einfo is
    function Default_Aspect_Component_Value (Id : E) return N is
    begin
       pragma Assert (Is_Array_Type (Id));
-      return Node19 (Id);
+      return Node19 (Base_Type (Id));
    end Default_Aspect_Component_Value;
 
    function Default_Aspect_Value (Id : E) return N is
    begin
       pragma Assert (Is_Scalar_Type (Id));
-      return Node19 (Id);
+      return Node19 (Base_Type (Id));
    end Default_Aspect_Value;
 
    function Default_Expr_Function (Id : E) return E is
@@ -3456,13 +3456,13 @@ package body Einfo is
 
    procedure Set_Default_Aspect_Component_Value (Id : E; V : E) is
    begin
-      pragma Assert (Is_Array_Type (Id));
+      pragma Assert (Is_Array_Type (Id) and then Is_Base_Type (Id));
       Set_Node19 (Id, V);
    end Set_Default_Aspect_Component_Value;
 
    procedure Set_Default_Aspect_Value (Id : E; V : E) is
    begin
-      pragma Assert (Is_Scalar_Type (Id));
+      pragma Assert (Is_Scalar_Type (Id) and then Is_Base_Type (Id));
       Set_Node19 (Id, V);
    end Set_Default_Aspect_Value;
 
index 1f69fef0229524e7865529a7fa3dce4887db7eba..c1ffa0018d4875c892eeb403a5e0d5b8b2e72ea2 100644 (file)
@@ -738,13 +738,13 @@ package Einfo is
 --       subprograms, this returns the {function,procedure}_specification, not
 --       the subprogram_declaration.
 
---    Default_Aspect_Component_Value (Node19)
+--    Default_Aspect_Component_Value (Node19) [base type only]
 --       Defined in array types. Holds the static value specified in a
---       default_component_value aspect specification for the array type.
+--       Default_Component_Value aspect specification for the array type.
 
---    Default_Aspect_Value (Node19)
+--    Default_Aspect_Value (Node19) [base type only]
 --       Defined in scalar types. Holds the static value specified in a
---       default_value aspect specification for the type.
+--       Default_Value aspect specification for the type.
 
 --    Default_Expr_Function (Node21)
 --       Defined in parameters. It holds the entity of the parameterless
@@ -5171,7 +5171,7 @@ package Einfo is
    --  E_Array_Type
    --  E_Array_Subtype
    --    First_Index                         (Node17)
-   --    Default_Aspect_Component_Value      (Node19)
+   --    Default_Aspect_Component_Value      (Node19)   (base type only)
    --    Component_Type                      (Node20)   (base type only)
    --    Original_Array_Type                 (Node21)
    --    Component_Size                      (Uint22)   (base type only)
@@ -5354,7 +5354,7 @@ package Einfo is
    --    Lit_Indexes                         (Node15)   (root type only)
    --    Lit_Strings                         (Node16)   (root type only)
    --    First_Literal                       (Node17)
-   --    Default_Aspect_Value                (Node19)
+   --    Default_Aspect_Value                (Node19)   (base type only)
    --    Scalar_Range                        (Node20)
    --    Enum_Pos_To_Rep                     (Node23)   (type only)
    --    Static_Predicate                    (List25)
@@ -5386,7 +5386,7 @@ package Einfo is
    --  E_Floating_Point_Subtype
    --    Digits_Value                        (Uint17)
    --    Float_Rep                           (Uint10)   (Float_Rep_Kind)
-   --    Default_Aspect_Value                (Node19)
+   --    Default_Aspect_Value                (Node19)   (base type only)
    --    Scalar_Range                        (Node20)
    --    Machine_Emax_Value                  (synth)
    --    Machine_Emin_Value                  (synth)
@@ -5564,7 +5564,7 @@ package Einfo is
    --  E_Modular_Integer_Type
    --  E_Modular_Integer_Subtype
    --    Modulus                             (Uint17)   (base type only)
-   --    Default_Aspect_Value                (Node19)
+   --    Default_Aspect_Value                (Node19)   (base type only)
    --    Original_Array_Type                 (Node21)
    --    Scalar_Range                        (Node20)
    --    Static_Predicate                    (List25)
@@ -5599,7 +5599,7 @@ package Einfo is
    --  E_Ordinary_Fixed_Point_Type
    --  E_Ordinary_Fixed_Point_Subtype
    --    Delta_Value                         (Ureal18)
-   --    Default_Aspect_Value                (Node19)
+   --    Default_Aspect_Value                (Node19)   (base type only)
    --    Scalar_Range                        (Node20)
    --    Small_Value                         (Ureal21)
    --    Has_Small_Clause                    (Flag67)
@@ -5853,7 +5853,7 @@ package Einfo is
 
    --  E_Signed_Integer_Type
    --  E_Signed_Integer_Subtype
-   --    Default_Aspect_Value                (Node19)
+   --    Default_Aspect_Value                (Node19)   (base type only)
    --    Scalar_Range                        (Node20)
    --    Static_Predicate                    (List25)
    --    Has_Biased_Representation           (Flag139)
index e0a91324a8069e5e7637c65c9a8943d4e02668fe..e58e5b22f67cf36158b7c64fb4b61a4ddc277ae0 100644 (file)
@@ -4878,6 +4878,43 @@ package body Exp_Aggr is
          Check_Same_Aggr_Bounds (N, 1);
       end if;
 
+      --  STEP 1d
+
+      --  If we have a default component value, or simple initialization is
+      --  required for the component type, then we replace <> in component
+      --  associations by the required default value.
+
+      declare
+         Default_Val : Node_Id;
+         Assoc       : Node_Id;
+
+      begin
+         if (Present (Default_Aspect_Component_Value (Typ))
+              or else Needs_Simple_Initialization (Ctyp))
+           and then Present (Component_Associations (N))
+         then
+            Assoc := First (Component_Associations (N));
+            while Present (Assoc) loop
+               if Nkind (Assoc) = N_Component_Association
+                 and then Box_Present (Assoc)
+               then
+                  Set_Box_Present (Assoc, False);
+
+                  if Present (Default_Aspect_Component_Value (Typ)) then
+                     Default_Val := Default_Aspect_Component_Value (Typ);
+                  else
+                     Default_Val := Get_Simple_Init_Val (Ctyp, N);
+                  end if;
+
+                  Set_Expression (Assoc, New_Copy_Tree (Default_Val));
+                  Analyze_And_Resolve (Expression (Assoc), Ctyp);
+               end if;
+
+               Next (Assoc);
+            end loop;
+         end if;
+      end;
+
       --  STEP 2
 
       --  Here we test for is packed array aggregate that we can handle at
index 98ad0e21cf2064413efd985dd60ce3cf9c8190a0..6b3a19327a414176b155ca891d9aaaf78bdc14c1 100644 (file)
@@ -4940,7 +4940,7 @@ package body Exp_Ch3 is
                Next_Elmt (Discr);
             end loop;
 
-            --  Now collect values of initialized components.
+            --  Now collect values of initialized components
 
             Comp := First_Component (Full_Type);
             while Present (Comp) loop
@@ -4957,11 +4957,11 @@ package body Exp_Ch3 is
                Next_Component (Comp);
             end loop;
 
-            --  Finally, box-initialize remaining components.
+            --  Finally, box-initialize remaining components
 
             Append_To (Component_Associations (Aggr),
               Make_Component_Association (Loc,
-                Choices => New_List (Make_Others_Choice (Loc)),
+                Choices    => New_List (Make_Others_Choice (Loc)),
                 Expression => Empty));
             Set_Box_Present (Last (Component_Associations (Aggr)));
             Set_Expression (N, Aggr);
index 8b19f9190dbae4bdc851b937f0f8387326cb507b..2b6dc92d315eaebc3e5b2c275827b880bd395a29 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1992-2010, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2013, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -211,7 +211,7 @@ package body Exp_Tss is
    begin
       return Present (BIP)
         and then (Restriction_Active (No_Default_Initialization)
-                    or else not Is_Null_Init_Proc (BIP));
+                   or else not Is_Null_Init_Proc (BIP));
    end Has_Non_Null_Base_Init_Proc;
 
    ---------------
index a08584f22e368c4ca193cd6f21d92df958251efe..255e78a2614d81e65c391096851dbc43c814955b 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                     Copyright (C) 2007-2010, AdaCore                     --
+--                     Copyright (C) 2007-2013, AdaCore                     --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -192,6 +192,11 @@ package body GNAT.Decode_String is
             elsif (U and 2#11100000#) = 2#110_00000# then
                W := U and 2#00011111#;
                Get_UTF_Byte;
+
+               if W not in 16#00_0080# .. 16#00_07FF# then
+                  Bad;
+               end if;
+
                Result := Wide_Wide_Character'Val (W);
 
             --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
@@ -200,6 +205,11 @@ package body GNAT.Decode_String is
                W := U and 2#00001111#;
                Get_UTF_Byte;
                Get_UTF_Byte;
+
+               if W not in 16#00_0800# .. 16#00_FFFF# then
+                  Bad;
+               end if;
+
                Result := Wide_Wide_Character'Val (W);
 
             --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
@@ -211,6 +221,10 @@ package body GNAT.Decode_String is
                   Get_UTF_Byte;
                end loop;
 
+               if W not in 16#01_0000# .. 16#10_FFFF# then
+                  Bad;
+               end if;
+
                Result := Wide_Wide_Character'Val (W);
 
             --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx 10xxxxxx
@@ -223,6 +237,10 @@ package body GNAT.Decode_String is
                   Get_UTF_Byte;
                end loop;
 
+               if W not in 16#0020_0000# .. 16#03FF_FFFF# then
+                  Bad;
+               end if;
+
                Result := Wide_Wide_Character'Val (W);
 
             --  All other cases are invalid, note that this includes:
@@ -304,100 +322,10 @@ package body GNAT.Decode_String is
    -------------------------
 
    procedure Next_Wide_Character (Input : String; Ptr : in out Natural) is
+      Discard : Wide_Character;
+      pragma Unreferenced (Discard);
    begin
-      if Ptr < Input'First then
-         Past_End;
-      end if;
-
-      --  Special efficient encoding for UTF-8 case
-
-      if Encoding_Method = WCEM_UTF8 then
-         UTF8 : declare
-            U : Unsigned_32;
-
-            procedure Getc;
-            pragma Inline (Getc);
-            --  Gets the character at Input (Ptr) and returns code in U as
-            --  Unsigned_32 value. On return Ptr is bumped past the character.
-
-            procedure Skip_UTF_Byte;
-            pragma Inline (Skip_UTF_Byte);
-            --  Skips past one encoded byte which must be 2#10xxxxxx#
-
-            ----------
-            -- Getc --
-            ----------
-
-            procedure Getc is
-            begin
-               if Ptr > Input'Last then
-                  Past_End;
-               else
-                  U := Unsigned_32 (Character'Pos (Input (Ptr)));
-                  Ptr := Ptr + 1;
-               end if;
-            end Getc;
-
-            -------------------
-            -- Skip_UTF_Byte --
-            -------------------
-
-            procedure Skip_UTF_Byte is
-            begin
-               Getc;
-
-               if (U and 2#11000000#) /= 2#10_000000# then
-                  Bad;
-               end if;
-            end Skip_UTF_Byte;
-
-         --  Start of processing for UTF-8 case
-
-         begin
-            --  16#00_0000#-16#00_007F#: 0xxxxxxx
-
-            Getc;
-
-            if (U and 2#10000000#) = 2#00000000# then
-               return;
-
-            --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
-
-            elsif (U and 2#11100000#) = 2#110_00000# then
-               Skip_UTF_Byte;
-
-            --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
-
-            elsif (U and 2#11110000#) = 2#1110_0000# then
-               Skip_UTF_Byte;
-               Skip_UTF_Byte;
-
-            --  Any other code is invalid, note that this includes:
-
-            --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-            --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx 10xxxxxx
-            --                               10xxxxxx 10xxxxxx
-
-            --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx 10xxxxxx
-            --                               10xxxxxx 10xxxxxx 10xxxxxx
-
-            --  since Wide_Character does not allow codes > 16#FFFF#
-
-            else
-               Bad;
-            end if;
-         end UTF8;
-
-      --  Non-UTF-8 case
-
-      else
-         declare
-            Discard : Wide_Character;
-         begin
-            Decode_Wide_Character (Input, Ptr, Discard);
-         end;
-      end if;
+      Decode_Wide_Character (Input, Ptr, Discard);
    end Next_Wide_Character;
 
    ------------------------------
@@ -405,110 +333,10 @@ package body GNAT.Decode_String is
    ------------------------------
 
    procedure Next_Wide_Wide_Character (Input : String; Ptr : in out Natural) is
+      Discard : Wide_Wide_Character;
+      pragma Unreferenced (Discard);
    begin
-      --  Special efficient encoding for UTF-8 case
-
-      if Encoding_Method = WCEM_UTF8 then
-         UTF8 : declare
-            U : Unsigned_32;
-
-            procedure Getc;
-            pragma Inline (Getc);
-            --  Gets the character at Input (Ptr) and returns code in U as
-            --  Unsigned_32 value. On return Ptr is bumped past the character.
-
-            procedure Skip_UTF_Byte;
-            pragma Inline (Skip_UTF_Byte);
-            --  Skips past one encoded byte which must be 2#10xxxxxx#
-
-            ----------
-            -- Getc --
-            ----------
-
-            procedure Getc is
-            begin
-               if Ptr > Input'Last then
-                  Past_End;
-               else
-                  U := Unsigned_32 (Character'Pos (Input (Ptr)));
-                  Ptr := Ptr + 1;
-               end if;
-            end Getc;
-
-            -------------------
-            -- Skip_UTF_Byte --
-            -------------------
-
-            procedure Skip_UTF_Byte is
-            begin
-               Getc;
-
-               if (U and 2#11000000#) /= 2#10_000000# then
-                  Bad;
-               end if;
-            end Skip_UTF_Byte;
-
-         --  Start of processing for UTF-8 case
-
-         begin
-            if Ptr < Input'First then
-               Past_End;
-            end if;
-
-            --  16#00_0000#-16#00_007F#: 0xxxxxxx
-
-            Getc;
-
-            if (U and 2#10000000#) = 2#00000000# then
-               null;
-
-            --  16#00_0080#-16#00_07FF#: 110xxxxx 10xxxxxx
-
-            elsif (U and 2#11100000#) = 2#110_00000# then
-               Skip_UTF_Byte;
-
-            --  16#00_0800#-16#00_ffff#: 1110xxxx 10xxxxxx 10xxxxxx
-
-            elsif (U and 2#11110000#) = 2#1110_0000# then
-               Skip_UTF_Byte;
-               Skip_UTF_Byte;
-
-            --  16#01_0000#-16#10_FFFF#: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
-
-            elsif (U and 2#11111000#) = 2#11110_000# then
-               for K in 1 .. 3 loop
-                  Skip_UTF_Byte;
-               end loop;
-
-            --  16#0020_0000#-16#03FF_FFFF#: 111110xx 10xxxxxx 10xxxxxx
-            --                               10xxxxxx 10xxxxxx
-
-            elsif (U and 2#11111100#) = 2#111110_00# then
-               for K in 1 .. 4 loop
-                  Skip_UTF_Byte;
-               end loop;
-
-            --  Any other code is invalid, note that this includes:
-
-            --  16#0400_0000#-16#7FFF_FFFF#: 1111110x 10xxxxxx 10xxxxxx
-            --                               10xxxxxx 10xxxxxx 10xxxxxx
-
-            --  since Wide_Wide_Character does not allow codes > 16#03FF_FFFF#
-
-            else
-               Bad;
-            end if;
-         end UTF8;
-
-      --  Non-UTF-8 case
-
-      else
-         declare
-            Discard : Wide_Wide_Character;
-         begin
-            Decode_Wide_Wide_Character (Input, Ptr, Discard);
-         end;
-      end if;
+      Decode_Wide_Wide_Character (Input, Ptr, Discard);
    end Next_Wide_Wide_Character;
 
    --------------
index e4d7b7f16334de42a54642165dd44aba0a44af3b..d59f10dcb2005d66c8ceb4f6cb332fc43746ee3a 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                       Copyright (C) 2007-2010, AdaCore                   --
+--                     Copyright (C) 2007-2013, AdaCore                     --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
 --  does not make any assumptions about the character coding. See also the
 --  packages Ada.Wide_[Wide_]Characters.Unicode for unicode specific functions.
 
+--  In particular, in the case of UTF-8, all valid UTF-8 encodings, as listed
+--  in table 3.6 of the Unicode Standard, version 6.2.0, are recognized as
+--  legitimate. This includes the full range 16#0000_0000# .. 16#03FF_FFFF#.
+--  This includes codes in the range 16#D800# - 16#DFFF#. These codes all
+--  have UTF-8 encoding sequences that are well-defined (e.g. the encoding for
+--  16#D800# is ED A0 80). But these codes do not correspond to defined Unicode
+--  characters and are thus considered to be "not well-formed" (see table 3.7
+--  of the Unicode Standard). If you need to exclude these codes, you must do
+--  that manually, e.g. use Decode_Wide_Character/Decode_Wide_String and check
+--  that the resulting code(s) are not in this range.
+
 --  Note on the use of brackets encoding (WCEM_Brackets). The brackets encoding
 --  method is ambiguous in the context of this package, since there is no way
 --  to tell if ["1234"] is eight unencoded characters or one encoded character.
@@ -86,7 +97,6 @@ package GNAT.Decode_String is
    --  will be raised.
 
    function Decode_Wide_Wide_String (S : String) return Wide_Wide_String;
-   pragma Inline (Decode_Wide_Wide_String);
    --  Same as above function but for Wide_Wide_String output
 
    procedure Decode_Wide_Wide_String
@@ -124,16 +134,17 @@ package GNAT.Decode_String is
      (Input  : String;
       Ptr    : in out Natural;
       Result : out Wide_Wide_Character);
+   pragma Inline (Decode_Wide_Wide_Character);
    --  Same as above procedure but with Wide_Wide_Character input
 
    procedure Next_Wide_Character (Input : String; Ptr : in out Natural);
+   pragma Inline (Next_Wide_Character);
    --  This procedure examines the input string starting at Input (Ptr), and
    --  advances Ptr past one character in the encoded string, so that on return
    --  Ptr points to the next encoded character. Constraint_Error is raised if
    --  an invalid encoding is encountered, or the end of the string is reached
    --  or if Ptr is less than String'First on entry, or if the character
-   --  skipped is not a valid Wide_Character code. This call may be more
-   --  efficient than calling Decode_Wide_Character and discarding the result.
+   --  skipped is not a valid Wide_Character code.
 
    procedure Prev_Wide_Character (Input : String; Ptr : in out Natural);
    --  This procedure is similar to Next_Encoded_Character except that it moves
@@ -149,8 +160,12 @@ package GNAT.Decode_String is
    --  WCEM_Brackets). For all other encodings, we work by starting at the
    --  beginning of the string and moving forward till Ptr is reached, which
    --  is correct but slow.
+   --
+   --  Note: this routine assumes that the sequence prior to Ptr is correctly
+   --  encoded, it does not have a defined behavior if this is not the case.
 
    procedure Next_Wide_Wide_Character (Input : String; Ptr : in out Natural);
+   pragma Inline (Next_Wide_Wide_Character);
    --  Similar to Next_Wide_Character except that codes skipped must be valid
    --  Wide_Wide_Character codes.
 
index 9ea370b2c787f5c8df6302740590778463b96f9c..3c62f3d2127e9fe8c5f69d985f0b1fb8f67f1dd4 100644 (file)
@@ -12217,7 +12217,18 @@ See items describing the integer and floating-point types supported.
 @sp 1
 @cartouche
 @noindent
-@strong{61}.  The accuracy actually achieved by the elementary
+@strong{61}. The string returned by @code{Character_Set_Version}.
+See A.3.5(3).
+@end cartouche
+@noindent
+@code{Ada.Wide_Characters.Handling.Character_Set_Version} returns
+the string "Unicode 6.2", referring to version 6.2.x of the
+Unicode specification.
+
+@sp 1
+@cartouche
+@noindent
+@strong{62}.  The accuracy actually achieved by the elementary
 functions.  See A.5.1(1).
 @end cartouche
 @noindent
@@ -12227,7 +12238,7 @@ library.  Only fast math mode is implemented.
 @sp 1
 @cartouche
 @noindent
-@strong{62}.  The sign of a zero result from some of the operators or
+@strong{63}.  The sign of a zero result from some of the operators or
 functions in @code{Numerics.Generic_Elementary_Functions}, when
 @code{Float_Type'Signed_Zeros} is @code{True}.  See A.5.1(46).
 @end cartouche
@@ -12238,7 +12249,7 @@ floating-point.
 @sp 1
 @cartouche
 @noindent
-@strong{63}.  The value of
+@strong{64}.  The value of
 @code{Numerics.Float_Random.Max_Image_Width}.  See A.5.2(27).
 @end cartouche
 @noindent
@@ -12247,7 +12258,7 @@ Maximum image width is 6864, see library file @file{s-rannum.ads}.
 @sp 1
 @cartouche
 @noindent
-@strong{64}.  The value of
+@strong{65}.  The value of
 @code{Numerics.Discrete_Random.Max_Image_Width}.  See A.5.2(27).
 @end cartouche
 @noindent
@@ -12256,7 +12267,7 @@ Maximum image width is 6864, see library file @file{s-rannum.ads}.
 @sp 1
 @cartouche
 @noindent
-@strong{65}.  The algorithms for random number generation.  See
+@strong{66}.  The algorithms for random number generation.  See
 A.5.2(32).
 @end cartouche
 @noindent
@@ -12267,7 +12278,7 @@ The algorithm is the Mersenne Twister, as documented in the source file
 @sp 1
 @cartouche
 @noindent
-@strong{66}.  The string representation of a random number generator's
+@strong{67}.  The string representation of a random number generator's
 state.  See A.5.2(38).
 @end cartouche
 @noindent
@@ -12278,7 +12289,7 @@ of the state vector.
 @sp 1
 @cartouche
 @noindent
-@strong{67}.  The minimum time interval between calls to the
+@strong{68}.  The minimum time interval between calls to the
 time-dependent Reset procedure that are guaranteed to initiate different
 random number sequences.  See A.5.2(45).
 @end cartouche
@@ -12289,7 +12300,7 @@ random numbers is one microsecond.
 @sp 1
 @cartouche
 @noindent
-@strong{68}.  The values of the @code{Model_Mantissa},
+@strong{69}.  The values of the @code{Model_Mantissa},
 @code{Model_Emin}, @code{Model_Epsilon}, @code{Model},
 @code{Safe_First}, and @code{Safe_Last} attributes, if the Numerics
 Annex is not supported.  See A.5.3(72).
@@ -12301,7 +12312,7 @@ Run the compiler with @option{-gnatS} to produce a listing of package
 @sp 1
 @cartouche
 @noindent
-@strong{69}.  Any implementation-defined characteristics of the
+@strong{70}.  Any implementation-defined characteristics of the
 input-output packages.  See A.7(14).
 @end cartouche
 @noindent
@@ -12311,7 +12322,7 @@ packages.
 @sp 1
 @cartouche
 @noindent
-@strong{70}.  The value of @code{Buffer_Size} in @code{Storage_IO}.  See
+@strong{71}.  The value of @code{Buffer_Size} in @code{Storage_IO}.  See
 A.9(10).
 @end cartouche
 @noindent
@@ -12322,7 +12333,7 @@ boundary.
 @sp 1
 @cartouche
 @noindent
-@strong{71}.  External files for standard input, standard output, and
+@strong{72}.  External files for standard input, standard output, and
 standard error See A.10(5).
 @end cartouche
 @noindent
@@ -12332,7 +12343,7 @@ libraries.  See source file @file{i-cstrea.ads} for further details.
 @sp 1
 @cartouche
 @noindent
-@strong{72}.  The accuracy of the value produced by @code{Put}.  See
+@strong{73}.  The accuracy of the value produced by @code{Put}.  See
 A.10.9(36).
 @end cartouche
 @noindent
@@ -12343,7 +12354,7 @@ significant digit positions.
 @sp 1
 @cartouche
 @noindent
-@strong{73}.  The meaning of @code{Argument_Count}, @code{Argument}, and
+@strong{74}.  The meaning of @code{Argument_Count}, @code{Argument}, and
 @code{Command_Name}.  See A.15(1).
 @end cartouche
 @noindent
@@ -12353,7 +12364,7 @@ main program in the natural manner.
 @sp 1
 @cartouche
 @noindent
-@strong{74}.  The interpretation of the @code{Form} parameter in procedure
+@strong{75}.  The interpretation of the @code{Form} parameter in procedure
 @code{Create_Directory}.  See A.16(56).
 @end cartouche
 @noindent
@@ -12362,7 +12373,7 @@ The @code{Form} parameter is not used.
 @sp 1
 @cartouche
 @noindent
-@strong{75}.  The interpretation of the @code{Form} parameter in procedure
+@strong{76}.  The interpretation of the @code{Form} parameter in procedure
 @code{Create_Path}.  See A.16(60).
 @end cartouche
 @noindent
@@ -12371,7 +12382,7 @@ The @code{Form} parameter is not used.
 @sp 1
 @cartouche
 @noindent
-@strong{76}.  The interpretation of the @code{Form} parameter in procedure
+@strong{77}.  The interpretation of the @code{Form} parameter in procedure
 @code{Copy_File}.  See A.16(68).
 @end cartouche
 @noindent
@@ -12450,7 +12461,7 @@ Form => "mode=internal, preserve=timestamps"
 @sp 1
 @cartouche
 @noindent
-@strong{77}.  Implementation-defined convention names.  See B.1(11).
+@strong{78}.  Implementation-defined convention names.  See B.1(11).
 @end cartouche
 @noindent
 The following convention names are supported
@@ -12517,7 +12528,7 @@ implementations, these names are accepted silently.
 @sp 1
 @cartouche
 @noindent
-@strong{78}.  The meaning of link names.  See B.1(36).
+@strong{79}.  The meaning of link names.  See B.1(36).
 @end cartouche
 @noindent
 Link names are the actual names used by the linker.
@@ -12525,7 +12536,7 @@ Link names are the actual names used by the linker.
 @sp 1
 @cartouche
 @noindent
-@strong{79}.  The manner of choosing link names when neither the link
+@strong{80}.  The manner of choosing link names when neither the link
 name nor the address of an imported or exported entity is specified.  See
 B.1(36).
 @end cartouche
@@ -12537,7 +12548,7 @@ letters.
 @sp 1
 @cartouche
 @noindent
-@strong{80}.  The effect of pragma @code{Linker_Options}.  See B.1(37).
+@strong{81}.  The effect of pragma @code{Linker_Options}.  See B.1(37).
 @end cartouche
 @noindent
 The string passed to @code{Linker_Options} is presented uninterpreted as
@@ -12558,7 +12569,7 @@ from the corresponding package spec.
 @sp 1
 @cartouche
 @noindent
-@strong{81}.  The contents of the visible part of package
+@strong{82}.  The contents of the visible part of package
 @code{Interfaces} and its language-defined descendants.  See B.2(1).
 @end cartouche
 @noindent
@@ -12567,7 +12578,7 @@ See files with prefix @file{i-} in the distributed library.
 @sp 1
 @cartouche
 @noindent
-@strong{82}.  Implementation-defined children of package
+@strong{83}.  Implementation-defined children of package
 @code{Interfaces}.  The contents of the visible part of package
 @code{Interfaces}.  See B.2(11).
 @end cartouche
@@ -12577,7 +12588,7 @@ See files with prefix @file{i-} in the distributed library.
 @sp 1
 @cartouche
 @noindent
-@strong{83}.  The types @code{Floating}, @code{Long_Floating},
+@strong{84}.  The types @code{Floating}, @code{Long_Floating},
 @code{Binary}, @code{Long_Binary}, @code{Decimal_ Element}, and
 @code{COBOL_Character}; and the initialization of the variables
 @code{Ada_To_COBOL} and @code{COBOL_To_Ada}, in
@@ -12605,7 +12616,7 @@ For initialization, see the file @file{i-cobol.ads} in the distributed library.
 @sp 1
 @cartouche
 @noindent
-@strong{84}.  Support for access to machine instructions.  See C.1(1).
+@strong{85}.  Support for access to machine instructions.  See C.1(1).
 @end cartouche
 @noindent
 See documentation in file @file{s-maccod.ads} in the distributed library.
@@ -12613,7 +12624,7 @@ See documentation in file @file{s-maccod.ads} in the distributed library.
 @sp 1
 @cartouche
 @noindent
-@strong{85}.  Implementation-defined aspects of access to machine
+@strong{86}.  Implementation-defined aspects of access to machine
 operations.  See C.1(9).
 @end cartouche
 @noindent
@@ -12622,7 +12633,7 @@ See documentation in file @file{s-maccod.ads} in the distributed library.
 @sp 1
 @cartouche
 @noindent
-@strong{86}.  Implementation-defined aspects of interrupts.  See C.3(2).
+@strong{87}.  Implementation-defined aspects of interrupts.  See C.3(2).
 @end cartouche
 @noindent
 Interrupts are mapped to signals or conditions as appropriate.  See
@@ -12633,7 +12644,7 @@ on the interrupts supported on a particular target.
 @sp 1
 @cartouche
 @noindent
-@strong{87}.  Implementation-defined aspects of pre-elaboration.  See
+@strong{88}.  Implementation-defined aspects of pre-elaboration.  See
 C.4(13).
 @end cartouche
 @noindent
@@ -12643,7 +12654,7 @@ except under control of the debugger.
 @sp 1
 @cartouche
 @noindent
-@strong{88}.  The semantics of pragma @code{Discard_Names}.  See C.5(7).
+@strong{89}.  The semantics of pragma @code{Discard_Names}.  See C.5(7).
 @end cartouche
 @noindent
 Pragma @code{Discard_Names} causes names of enumeration literals to
@@ -12654,7 +12665,7 @@ Pos values.
 @sp 1
 @cartouche
 @noindent
-@strong{89}.  The result of the @code{Task_Identification.Image}
+@strong{90}.  The result of the @code{Task_Identification.Image}
 attribute.  See C.7.1(7).
 @end cartouche
 @noindent
@@ -12684,7 +12695,7 @@ virtual address of the control block of the task.
 @sp 1
 @cartouche
 @noindent
-@strong{90}.  The value of @code{Current_Task} when in a protected entry
+@strong{91}.  The value of @code{Current_Task} when in a protected entry
 or interrupt handler.  See C.7.1(17).
 @end cartouche
 @noindent
@@ -12694,7 +12705,7 @@ convenient thread, so the value of @code{Current_Task} is undefined.
 @sp 1
 @cartouche
 @noindent
-@strong{91}.  The effect of calling @code{Current_Task} from an entry
+@strong{92}.  The effect of calling @code{Current_Task} from an entry
 body or interrupt handler.  See C.7.1(19).
 @end cartouche
 @noindent
@@ -12705,7 +12716,7 @@ executing the code.
 @sp 1
 @cartouche
 @noindent
-@strong{92}.  Implementation-defined aspects of
+@strong{93}.  Implementation-defined aspects of
 @code{Task_Attributes}.  See C.7.2(19).
 @end cartouche
 @noindent
@@ -12714,7 +12725,7 @@ There are no implementation-defined aspects of @code{Task_Attributes}.
 @sp 1
 @cartouche
 @noindent
-@strong{93}.  Values of all @code{Metrics}.  See D(2).
+@strong{94}.  Values of all @code{Metrics}.  See D(2).
 @end cartouche
 @noindent
 The metrics information for GNAT depends on the performance of the
@@ -12729,7 +12740,7 @@ the required metrics.
 @sp 1
 @cartouche
 @noindent
-@strong{94}.  The declarations of @code{Any_Priority} and
+@strong{95}.  The declarations of @code{Any_Priority} and
 @code{Priority}.  See D.1(11).
 @end cartouche
 @noindent
@@ -12738,7 +12749,7 @@ See declarations in file @file{system.ads}.
 @sp 1
 @cartouche
 @noindent
-@strong{95}.  Implementation-defined execution resources.  See D.1(15).
+@strong{96}.  Implementation-defined execution resources.  See D.1(15).
 @end cartouche
 @noindent
 There are no implementation-defined execution resources.
@@ -12746,7 +12757,7 @@ There are no implementation-defined execution resources.
 @sp 1
 @cartouche
 @noindent
-@strong{96}.  Whether, on a multiprocessor, a task that is waiting for
+@strong{97}.  Whether, on a multiprocessor, a task that is waiting for
 access to a protected object keeps its processor busy.  See D.2.1(3).
 @end cartouche
 @noindent
@@ -12756,7 +12767,7 @@ object does not keep its processor busy.
 @sp 1
 @cartouche
 @noindent
-@strong{97}.  The affect of implementation defined execution resources
+@strong{98}.  The affect of implementation defined execution resources
 on task dispatching.  See D.2.1(9).
 @end cartouche
 @noindent
@@ -12767,7 +12778,7 @@ underlying operating system.
 @sp 1
 @cartouche
 @noindent
-@strong{98}.  Implementation-defined @code{policy_identifiers} allowed
+@strong{99}.  Implementation-defined @code{policy_identifiers} allowed
 in a pragma @code{Task_Dispatching_Policy}.  See D.2.2(3).
 @end cartouche
 @noindent
@@ -12777,7 +12788,7 @@ pragma.
 @sp 1
 @cartouche
 @noindent
-@strong{99}.  Implementation-defined aspects of priority inversion.  See
+@strong{100}.  Implementation-defined aspects of priority inversion.  See
 D.2.2(16).
 @end cartouche
 @noindent
@@ -12787,7 +12798,7 @@ of delay expirations for lower priority tasks.
 @sp 1
 @cartouche
 @noindent
-@strong{100}.  Implementation-defined task dispatching.  See D.2.2(18).
+@strong{101}.  Implementation-defined task dispatching.  See D.2.2(18).
 @end cartouche
 @noindent
 The policy is the same as that of the underlying threads implementation.
@@ -12795,7 +12806,7 @@ The policy is the same as that of the underlying threads implementation.
 @sp 1
 @cartouche
 @noindent
-@strong{101}.  Implementation-defined @code{policy_identifiers} allowed
+@strong{102}.  Implementation-defined @code{policy_identifiers} allowed
 in a pragma @code{Locking_Policy}.  See D.3(4).
 @end cartouche
 @noindent
@@ -12812,7 +12823,7 @@ concurrently.
 @sp 1
 @cartouche
 @noindent
-@strong{102}.  Default ceiling priorities.  See D.3(10).
+@strong{103}.  Default ceiling priorities.  See D.3(10).
 @end cartouche
 @noindent
 The ceiling priority of protected objects of the type
@@ -12822,7 +12833,7 @@ Reference Manual D.3(10),
 @sp 1
 @cartouche
 @noindent
-@strong{103}.  The ceiling of any protected object used internally by
+@strong{104}.  The ceiling of any protected object used internally by
 the implementation.  See D.3(16).
 @end cartouche
 @noindent
@@ -12832,7 +12843,7 @@ The ceiling priority of internal protected objects is
 @sp 1
 @cartouche
 @noindent
-@strong{104}.  Implementation-defined queuing policies.  See D.4(1).
+@strong{105}.  Implementation-defined queuing policies.  See D.4(1).
 @end cartouche
 @noindent
 There are no implementation-defined queuing policies.
@@ -12840,7 +12851,7 @@ There are no implementation-defined queuing policies.
 @sp 1
 @cartouche
 @noindent
-@strong{105}.  On a multiprocessor, any conditions that cause the
+@strong{106}.  On a multiprocessor, any conditions that cause the
 completion of an aborted construct to be delayed later than what is
 specified for a single processor.  See D.6(3).
 @end cartouche
@@ -12851,7 +12862,7 @@ processor, there are no further delays.
 @sp 1
 @cartouche
 @noindent
-@strong{106}.  Any operations that implicitly require heap storage
+@strong{107}.  Any operations that implicitly require heap storage
 allocation.  See D.7(8).
 @end cartouche
 @noindent
@@ -12861,7 +12872,7 @@ task creation.
 @sp 1
 @cartouche
 @noindent
-@strong{107}.  Implementation-defined aspects of pragma
+@strong{108}.  Implementation-defined aspects of pragma
 @code{Restrictions}.  See D.7(20).
 @end cartouche
 @noindent
@@ -12870,7 +12881,7 @@ There are no such implementation-defined aspects.
 @sp 1
 @cartouche
 @noindent
-@strong{108}.  Implementation-defined aspects of package
+@strong{109}.  Implementation-defined aspects of package
 @code{Real_Time}.  See D.8(17).
 @end cartouche
 @noindent
@@ -12879,7 +12890,7 @@ There are no implementation defined aspects of package @code{Real_Time}.
 @sp 1
 @cartouche
 @noindent
-@strong{109}.  Implementation-defined aspects of
+@strong{110}.  Implementation-defined aspects of
 @code{delay_statements}.  See D.9(8).
 @end cartouche
 @noindent
@@ -12889,7 +12900,7 @@ delayed (see D.9(7)).
 @sp 1
 @cartouche
 @noindent
-@strong{110}.  The upper bound on the duration of interrupt blocking
+@strong{111}.  The upper bound on the duration of interrupt blocking
 caused by the implementation.  See D.12(5).
 @end cartouche
 @noindent
@@ -12899,7 +12910,7 @@ no cases is it more than 10 milliseconds.
 @sp 1
 @cartouche
 @noindent
-@strong{111}.  The means for creating and executing distributed
+@strong{112}.  The means for creating and executing distributed
 programs.  See E(5).
 @end cartouche
 @noindent
@@ -12909,7 +12920,7 @@ distributed programs.  See the GLADE reference manual for further details.
 @sp 1
 @cartouche
 @noindent
-@strong{112}.  Any events that can result in a partition becoming
+@strong{113}.  Any events that can result in a partition becoming
 inaccessible.  See E.1(7).
 @end cartouche
 @noindent
@@ -12918,7 +12929,7 @@ See the GLADE reference manual for full details on such events.
 @sp 1
 @cartouche
 @noindent
-@strong{113}.  The scheduling policies, treatment of priorities, and
+@strong{114}.  The scheduling policies, treatment of priorities, and
 management of shared resources between partitions in certain cases.  See
 E.1(11).
 @end cartouche
@@ -12929,7 +12940,7 @@ multi-partition execution.
 @sp 1
 @cartouche
 @noindent
-@strong{114}.  Events that cause the version of a compilation unit to
+@strong{115}.  Events that cause the version of a compilation unit to
 change.  See E.3(5).
 @end cartouche
 @noindent
@@ -12942,7 +12953,7 @@ comments.
 @sp 1
 @cartouche
 @noindent
-@strong{115}.  Whether the execution of the remote subprogram is
+@strong{116}.  Whether the execution of the remote subprogram is
 immediately aborted as a result of cancellation.  See E.4(13).
 @end cartouche
 @noindent
@@ -12952,7 +12963,7 @@ a distributed application.
 @sp 1
 @cartouche
 @noindent
-@strong{116}.  Implementation-defined aspects of the PCS@.  See E.5(25).
+@strong{117}.  Implementation-defined aspects of the PCS@.  See E.5(25).
 @end cartouche
 @noindent
 See the GLADE reference manual for a full description of all implementation
@@ -12961,7 +12972,7 @@ defined aspects of the PCS@.
 @sp 1
 @cartouche
 @noindent
-@strong{117}.  Implementation-defined interfaces in the PCS@.  See
+@strong{118}.  Implementation-defined interfaces in the PCS@.  See
 E.5(26).
 @end cartouche
 @noindent
@@ -12971,7 +12982,7 @@ implementation defined interfaces.
 @sp 1
 @cartouche
 @noindent
-@strong{118}.  The values of named numbers in the package
+@strong{119}.  The values of named numbers in the package
 @code{Decimal}.  See F.2(7).
 @end cartouche
 @noindent
@@ -12991,7 +13002,7 @@ implementation defined interfaces.
 @sp 1
 @cartouche
 @noindent
-@strong{119}.  The value of @code{Max_Picture_Length} in the package
+@strong{120}.  The value of @code{Max_Picture_Length} in the package
 @code{Text_IO.Editing}.  See F.3.3(16).
 @end cartouche
 @noindent
@@ -13000,7 +13011,7 @@ implementation defined interfaces.
 @sp 1
 @cartouche
 @noindent
-@strong{120}.  The value of @code{Max_Picture_Length} in the package
+@strong{121}.  The value of @code{Max_Picture_Length} in the package
 @code{Wide_Text_IO.Editing}.  See F.3.4(5).
 @end cartouche
 @noindent
@@ -13009,7 +13020,7 @@ implementation defined interfaces.
 @sp 1
 @cartouche
 @noindent
-@strong{121}.  The accuracy actually achieved by the complex elementary
+@strong{122}.  The accuracy actually achieved by the complex elementary
 functions and by other complex arithmetic operations.  See G.1(1).
 @end cartouche
 @noindent
@@ -13019,7 +13030,7 @@ operations.  Only fast math mode is currently supported.
 @sp 1
 @cartouche
 @noindent
-@strong{122}.  The sign of a zero result (or a component thereof) from
+@strong{123}.  The sign of a zero result (or a component thereof) from
 any operator or function in @code{Numerics.Generic_Complex_Types}, when
 @code{Real'Signed_Zeros} is True.  See G.1.1(53).
 @end cartouche
@@ -13030,7 +13041,7 @@ implementation advice.
 @sp 1
 @cartouche
 @noindent
-@strong{123}.  The sign of a zero result (or a component thereof) from
+@strong{124}.  The sign of a zero result (or a component thereof) from
 any operator or function in
 @code{Numerics.Generic_Complex_Elementary_Functions}, when
 @code{Real'Signed_Zeros} is @code{True}.  See G.1.2(45).
@@ -13042,7 +13053,7 @@ implementation advice.
 @sp 1
 @cartouche
 @noindent
-@strong{124}.  Whether the strict mode or the relaxed mode is the
+@strong{125}.  Whether the strict mode or the relaxed mode is the
 default.  See G.2(2).
 @end cartouche
 @noindent
@@ -13052,7 +13063,7 @@ provides a highly efficient implementation of strict mode.
 @sp 1
 @cartouche
 @noindent
-@strong{125}.  The result interval in certain cases of fixed-to-float
+@strong{126}.  The result interval in certain cases of fixed-to-float
 conversion.  See G.2.1(10).
 @end cartouche
 @noindent
@@ -13063,7 +13074,7 @@ floating-point format.
 @sp 1
 @cartouche
 @noindent
-@strong{126}.  The result of a floating point arithmetic operation in
+@strong{127}.  The result of a floating point arithmetic operation in
 overflow situations, when the @code{Machine_Overflows} attribute of the
 result type is @code{False}.  See G.2.1(13).
 @end cartouche
@@ -13080,7 +13091,7 @@ properly generated.
 @sp 1
 @cartouche
 @noindent
-@strong{127}.  The result interval for division (or exponentiation by a
+@strong{128}.  The result interval for division (or exponentiation by a
 negative exponent), when the floating point hardware implements division
 as multiplication by a reciprocal.  See G.2.1(16).
 @end cartouche
@@ -13090,7 +13101,7 @@ Not relevant, division is IEEE exact.
 @sp 1
 @cartouche
 @noindent
-@strong{128}.  The definition of close result set, which determines the
+@strong{129}.  The definition of close result set, which determines the
 accuracy of certain fixed point multiplications and divisions.  See
 G.2.3(5).
 @end cartouche
@@ -13103,7 +13114,7 @@ is converted to the target type.
 @sp 1
 @cartouche
 @noindent
-@strong{129}.  Conditions on a @code{universal_real} operand of a fixed
+@strong{130}.  Conditions on a @code{universal_real} operand of a fixed
 point multiplication or division for which the result shall be in the
 perfect result set.  See G.2.3(22).
 @end cartouche
@@ -13115,7 +13126,7 @@ representable in 64-bits.
 @sp 1
 @cartouche
 @noindent
-@strong{130}.  The result of a fixed point arithmetic operation in
+@strong{131}.  The result of a fixed point arithmetic operation in
 overflow situations, when the @code{Machine_Overflows} attribute of the
 result type is @code{False}.  See G.2.3(27).
 @end cartouche
@@ -13126,7 +13137,7 @@ types.
 @sp 1
 @cartouche
 @noindent
-@strong{131}.  The result of an elementary function reference in
+@strong{132}.  The result of an elementary function reference in
 overflow situations, when the @code{Machine_Overflows} attribute of the
 result type is @code{False}.  See G.2.4(4).
 @end cartouche
@@ -13136,7 +13147,7 @@ IEEE infinite and Nan values are produced as appropriate.
 @sp 1
 @cartouche
 @noindent
-@strong{132}.  The value of the angle threshold, within which certain
+@strong{133}.  The value of the angle threshold, within which certain
 elementary functions, complex arithmetic operations, and complex
 elementary functions yield results conforming to a maximum relative
 error bound.  See G.2.4(10).
@@ -13147,7 +13158,7 @@ Information on this subject is not yet available.
 @sp 1
 @cartouche
 @noindent
-@strong{133}.  The accuracy of certain elementary functions for
+@strong{134}.  The accuracy of certain elementary functions for
 parameters beyond the angle threshold.  See G.2.4(10).
 @end cartouche
 @noindent
@@ -13156,7 +13167,7 @@ Information on this subject is not yet available.
 @sp 1
 @cartouche
 @noindent
-@strong{134}.  The result of a complex arithmetic operation or complex
+@strong{135}.  The result of a complex arithmetic operation or complex
 elementary function reference in overflow situations, when the
 @code{Machine_Overflows} attribute of the corresponding real type is
 @code{False}.  See G.2.6(5).
@@ -13167,7 +13178,7 @@ IEEE infinite and Nan values are produced as appropriate.
 @sp 1
 @cartouche
 @noindent
-@strong{135}.  The accuracy of certain complex arithmetic operations and
+@strong{136}.  The accuracy of certain complex arithmetic operations and
 certain complex elementary functions for parameters (or components
 thereof) beyond the angle threshold.  See G.2.6(8).
 @end cartouche
@@ -13177,7 +13188,7 @@ Information on those subjects is not yet available.
 @sp 1
 @cartouche
 @noindent
-@strong{136}.  Information regarding bounded errors and erroneous
+@strong{137}.  Information regarding bounded errors and erroneous
 execution.  See H.2(1).
 @end cartouche
 @noindent
@@ -13186,7 +13197,7 @@ Information on this subject is not yet available.
 @sp 1
 @cartouche
 @noindent
-@strong{137}.  Implementation-defined aspects of pragma
+@strong{138}.  Implementation-defined aspects of pragma
 @code{Inspection_Point}.  See H.3.2(8).
 @end cartouche
 @noindent
@@ -13196,7 +13207,7 @@ be examined by the debugger at the inspection point.
 @sp 1
 @cartouche
 @noindent
-@strong{138}.  Implementation-defined aspects of pragma
+@strong{139}.  Implementation-defined aspects of pragma
 @code{Restrictions}.  See H.4(25).
 @end cartouche
 @noindent
@@ -13207,7 +13218,7 @@ generated code.  Checks must suppressed by use of pragma @code{Suppress}.
 @sp 1
 @cartouche
 @noindent
-@strong{139}.  Any restrictions on pragma @code{Restrictions}.  See
+@strong{140}.  Any restrictions on pragma @code{Restrictions}.  See
 H.4(27).
 @end cartouche
 @noindent
index c584560b22f4804c3a520a8edd28d38a03aa6ec3..fb5abed1c43b8526fc26513b925cdd09d4190adf 100644 (file)
@@ -770,17 +770,9 @@ package body Sem_Ch13 is
          Set_Has_Default_Aspect (Base_Type (Ent));
 
          if Is_Scalar_Type (Ent) then
-            Set_Default_Aspect_Value (Ent, Expr);
-
-            --  Place default value of base type as well, because that is
-            --  the semantics of the aspect. It is convenient to link the
-            --  aspect to both the (possibly anonymous) base type and to
-            --  the given first subtype.
-
             Set_Default_Aspect_Value (Base_Type (Ent), Expr);
-
          else
-            Set_Default_Aspect_Component_Value (Ent, Expr);
+            Set_Default_Aspect_Component_Value (Base_Type (Ent), Expr);
          end if;
       end Analyze_Aspect_Default_Value;
 
@@ -9457,6 +9449,7 @@ package body Sem_Ch13 is
       --  Default_Component_Value
 
       if Is_Array_Type (Typ)
+        and then Is_Base_Type (Typ)
         and then Has_Rep_Item (Typ, Name_Default_Component_Value, False)
         and then Has_Rep_Item (Typ, Name_Default_Component_Value)
       then
@@ -9468,6 +9461,7 @@ package body Sem_Ch13 is
       --  Default_Value
 
       if Is_Scalar_Type (Typ)
+        and then Is_Base_Type (Typ)
         and then Has_Rep_Item (Typ, Name_Default_Value, False)
         and then Has_Rep_Item (Typ, Name_Default_Value)
       then
index 5abe92243879bd80fd3929ffa29c749486dfe378..c39f3c4885cdb61b2b80a8e83955996bd5052658 100644 (file)
@@ -3596,7 +3596,7 @@ package Sinfo is
       --  Sloc points to first selector name
       --  Choices (List1)
       --  Loop_Actions (List2-Sem)
-      --  Expression (Node3)
+      --  Expression (Node3) (empty if Box_Present)
       --  Box_Present (Flag15)
       --  Inherited_Discriminant (Flag13)