[multiple changes]

2014-02-19  Robert Dewar  <dewar@adacore.com>

	* 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  <dross@adacore.com>

	* 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
This commit is contained in:
Arnaud Charlet 2014-02-19 15:40:26 +01:00
parent fd9710dc68
commit edbd98c4cb
12 changed files with 57 additions and 28 deletions

View File

@ -1,3 +1,14 @@
2014-02-19 Robert Dewar <dewar@adacore.com>
* 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 <dross@adacore.com>
* 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 <kirtchev@adacore.com>
* sem_ch3.adb (Analyze_Declarations): Analyze

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;