From edbd98c4cbdef1063e6cc12a8568d2d1e3dbeebb Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Wed, 19 Feb 2014 15:40:26 +0100 Subject: [PATCH] [multiple changes] 2014-02-19 Robert Dewar * sem_ch3.adb, style.adb, sem_prag.adb, sem_ch13.adb: Minor reformatting * a-sequio.adb: Remove useless pragma Extensions_Allowed (no longer needed). 2014-02-19 Claire Dross * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, a-cforse.ads, a-cofove.ads: Add Iterable aspect to formal containers. From-SVN: r207900 --- gcc/ada/ChangeLog | 11 +++++++++++ gcc/ada/a-cfdlli.ads | 6 +++++- gcc/ada/a-cfhama.ads | 6 +++++- gcc/ada/a-cfhase.ads | 6 +++++- gcc/ada/a-cforma.ads | 6 +++++- gcc/ada/a-cforse.ads | 6 +++++- gcc/ada/a-cofove.ads | 6 +++++- gcc/ada/a-sequio.adb | 9 ++------- gcc/ada/sem_ch13.adb | 18 +++++++++--------- gcc/ada/sem_ch3.adb | 4 ++-- gcc/ada/sem_prag.adb | 4 ++-- gcc/ada/style.adb | 3 +-- 12 files changed, 57 insertions(+), 28 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 567aa0d9d30..c25c5a52864 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2014-02-19 Robert Dewar + + * sem_ch3.adb, style.adb, sem_prag.adb, sem_ch13.adb: Minor reformatting + * a-sequio.adb: Remove useless pragma Extensions_Allowed (no + longer needed). + +2014-02-19 Claire Dross + + * a-cfdlli.ads, a-cfhase.ads, a-cforma.ads, a-cfhama.ads, + a-cforse.ads, a-cofove.ads: Add Iterable aspect to formal containers. + 2014-02-19 Hristian Kirtchev * sem_ch3.adb (Analyze_Declarations): Analyze diff --git a/gcc/ada/a-cfdlli.ads b/gcc/ada/a-cfdlli.ads index 54f1886d297..7b19f1dd2e3 100644 --- a/gcc/ada/a-cfdlli.ads +++ b/gcc/ada/a-cfdlli.ads @@ -63,7 +63,11 @@ package Ada.Containers.Formal_Doubly_Linked_Lists is pragma Annotate (GNATprove, External_Axiomatization); pragma Pure; - type List (Capacity : Count_Type) is private; + type List (Capacity : Count_Type) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); pragma Preelaborable_Initialization (List); type Cursor is private; diff --git a/gcc/ada/a-cfhama.ads b/gcc/ada/a-cfhama.ads index 71eed2b0e4d..16a95052422 100644 --- a/gcc/ada/a-cfhama.ads +++ b/gcc/ada/a-cfhama.ads @@ -67,7 +67,11 @@ package Ada.Containers.Formal_Hashed_Maps is pragma Annotate (GNATprove, External_Axiomatization); pragma Pure; - type Map (Capacity : Count_Type; Modulus : Hash_Type) is private; + type Map (Capacity : Count_Type; Modulus : Hash_Type) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); pragma Preelaborable_Initialization (Map); type Cursor is private; diff --git a/gcc/ada/a-cfhase.ads b/gcc/ada/a-cfhase.ads index a3fc63dc036..fc02e04403d 100644 --- a/gcc/ada/a-cfhase.ads +++ b/gcc/ada/a-cfhase.ads @@ -69,7 +69,11 @@ package Ada.Containers.Formal_Hashed_Sets is pragma Annotate (GNATprove, External_Axiomatization); pragma Pure; - type Set (Capacity : Count_Type; Modulus : Hash_Type) is private; + type Set (Capacity : Count_Type; Modulus : Hash_Type) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); pragma Preelaborable_Initialization (Set); type Cursor is private; diff --git a/gcc/ada/a-cforma.ads b/gcc/ada/a-cforma.ads index a9426764560..08dabf5541f 100644 --- a/gcc/ada/a-cforma.ads +++ b/gcc/ada/a-cforma.ads @@ -70,7 +70,11 @@ package Ada.Containers.Formal_Ordered_Maps is function Equivalent_Keys (Left, Right : Key_Type) return Boolean; - type Map (Capacity : Count_Type) is private; + type Map (Capacity : Count_Type) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); pragma Preelaborable_Initialization (Map); type Cursor is private; diff --git a/gcc/ada/a-cforse.ads b/gcc/ada/a-cforse.ads index e935be5e457..bc69c1b1bf6 100644 --- a/gcc/ada/a-cforse.ads +++ b/gcc/ada/a-cforse.ads @@ -68,7 +68,11 @@ package Ada.Containers.Formal_Ordered_Sets is function Equivalent_Elements (Left, Right : Element_Type) return Boolean; - type Set (Capacity : Count_Type) is private; + type Set (Capacity : Count_Type) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); pragma Preelaborable_Initialization (Set); type Cursor is private; diff --git a/gcc/ada/a-cofove.ads b/gcc/ada/a-cofove.ads index 313165c49c6..17a3522d026 100644 --- a/gcc/ada/a-cofove.ads +++ b/gcc/ada/a-cofove.ads @@ -75,7 +75,11 @@ package Ada.Containers.Formal_Vectors is subtype Capacity_Range is Count_Type range 0 .. Count_Type (Index_Type'Last - Index_Type'First + 1); - type Vector (Capacity : Capacity_Range) is private; + type Vector (Capacity : Capacity_Range) is private with + Iterable => (First => First, + Next => Next, + Has_Element => Has_Element, + Element => Element); type Cursor is private; pragma Preelaborable_Initialization (Cursor); diff --git a/gcc/ada/a-sequio.adb b/gcc/ada/a-sequio.adb index b84252858bc..31e5d757ea3 100644 --- a/gcc/ada/a-sequio.adb +++ b/gcc/ada/a-sequio.adb @@ -202,15 +202,10 @@ package body Ada.Sequential_IO is -- buffer if Item is constrained, to check that the discriminants -- are correct. - pragma Extensions_Allowed (On); - -- Needed to allow Constrained reference here - - if Element_Type'Has_Discriminants - and then Item'Constrained - then + if Element_Type'Has_Discriminants and then Item'Constrained then declare RsizS : constant SSE.Storage_Offset := - SSE.Storage_Offset (Rsiz - 1); + SSE.Storage_Offset (Rsiz - 1); type SA is new SSE.Storage_Array (0 .. RsizS); diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb index 952e770ffb1..70cf819cbc2 100644 --- a/gcc/ada/sem_ch13.adb +++ b/gcc/ada/sem_ch13.adb @@ -130,7 +130,7 @@ package body Sem_Ch13 is function Get_Cursor_Type (Aspect : Node_Id; - Typ : Entity_Id) return Entity_Id; + Typ : Entity_Id) return Entity_Id; -- Find Cursor type in scope of Typ, by locating primitive operation First. -- For use in resolving the other primitive operations of an Iterable type. @@ -9770,15 +9770,15 @@ package body Sem_Ch13 is Cursor : Entity_Id; begin - -- If error already detected, return. + -- If error already detected, return if Error_Posted (Aspect) then return Any_Type; end if; - -- The cursor type for an Iterable aspect is the return type of - -- a non-overloaded First primitive operation. Locate association - -- for First. + -- The cursor type for an Iterable aspect is the return type of a + -- non-overloaded First primitive operation. Locate association for + -- First. Assoc := First (Component_Associations (Expression (Aspect))); First_Op := Any_Id; @@ -9798,7 +9798,7 @@ package body Sem_Ch13 is Cursor := Any_Type; - -- Locate function with desired name and profile in scope of type. + -- Locate function with desired name and profile in scope of type Func := First_Entity (Scope (Typ)); while Present (Func) loop @@ -9810,7 +9810,7 @@ package body Sem_Ch13 is then if Cursor /= Any_Type then Error_Msg_N - ("Operation First for iterable type must be unique", Aspect); + ("Operation First for iterable type must be unique", Aspect); return Any_Type; else @@ -9825,7 +9825,7 @@ package body Sem_Ch13 is if Cursor = Any_Type then Error_Msg_N - ("No legal primitive operation First for Iterable type", Aspect); + ("No legal primitive operation First for Iterable type", Aspect); end if; return Cursor; @@ -11524,7 +11524,7 @@ package body Sem_Ch13 is Element_Id : Entity_Id; begin - -- If previous error aspect is unusable. + -- If previous error aspect is unusable if Cursor = Any_Type then return; diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 98991e2bbc7..664a1da7d45 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -9398,7 +9398,7 @@ package body Sem_Ch3 is Error_Msg_Name_1 := Impl_Kind; Error_Msg_N ("overriding operation& must have synchronization%", - Subp_Alias); + Subp_Alias); end if; -- If primitive has Optional synchronization, overriding operation @@ -9410,7 +9410,7 @@ package body Sem_Ch3 is Error_Msg_Name_1 := Impl_Kind; Error_Msg_N ("overriding operation& must have syncrhonization%", - Subp_Alias); + Subp_Alias); end if; end Check_Pragma_Implemented; diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index b7d86746265..21514bfcbd0 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -4651,8 +4651,7 @@ package body Sem_Prag is Check_Grouping (Statements (HSS)); end if; - -- The first pragma of the first topmost grouping has been - -- found. + -- First pragma of the first topmost grouping has been found elsif Is_Loop_Pragma (Stmt) then @@ -4755,6 +4754,7 @@ package body Sem_Prag is procedure Placement_Error (Constr : Node_Id) is LA : constant String := " with Loop_Entry"; + begin if Prag_Id = Pragma_Assert then Error_Msg_String (1 .. LA'Length) := LA; diff --git a/gcc/ada/style.adb b/gcc/ada/style.adb index fffcf360cb4..d3f2d2c99cc 100644 --- a/gcc/ada/style.adb +++ b/gcc/ada/style.adb @@ -260,8 +260,8 @@ package body Style is procedure Missing_Overriding (N : Node_Id; E : Entity_Id) is Nod : Node_Id; - begin + begin -- Perform the check on source subprograms and on subprogram instances, -- because these can be primitives of untagged types. Note that such -- indicators were introduced in Ada 2005. @@ -278,7 +278,6 @@ package body Style is and then Is_Generic_Instance (E) then Nod := Next (Parent (Parent (List_Containing (N)))); - else Nod := N; end if; -- 2.30.2