Commit 8256c1bf by Arnaud Charlet

[multiple changes]

2011-09-01  Robert Dewar  <dewar@adacore.com>

	* inline.adb, sem_aggr.adb: Minor reformatting.

2011-09-01  Ed Schonberg  <schonberg@adacore.com>

	* a-convec.adb: Proper handling of cursors for Ada2012 iterators.

From-SVN: r178413
parent d1c5f424
2011-09-01 Robert Dewar <dewar@adacore.com> 2011-09-01 Robert Dewar <dewar@adacore.com>
* inline.adb, sem_aggr.adb: Minor reformatting.
2011-09-01 Ed Schonberg <schonberg@adacore.com>
* a-convec.adb: Proper handling of cursors for Ada2012 iterators.
2011-09-01 Robert Dewar <dewar@adacore.com>
* prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting. * prj-proc.adb, exp_ch6.adb, prj-env.adb: Minor reformatting.
2011-09-01 Bob Duff <duff@adacore.com> 2011-09-01 Bob Duff <duff@adacore.com>
......
...@@ -800,9 +800,12 @@ package body Ada.Containers.Vectors is ...@@ -800,9 +800,12 @@ package body Ada.Containers.Vectors is
end First; end First;
function First (Object : Iterator) return Cursor is function First (Object : Iterator) return Cursor is
C : constant Cursor := (Object.Container, Index_Type'First);
begin begin
return C; if Is_Empty (Object.Container.all) then
return No_Element;
end if;
return Cursor'(Object.Container, Index_Type'First);
end First; end First;
------------------- -------------------
...@@ -2044,8 +2047,7 @@ package body Ada.Containers.Vectors is ...@@ -2044,8 +2047,7 @@ package body Ada.Containers.Vectors is
function Iterate (Container : Vector; Start : Cursor) function Iterate (Container : Vector; Start : Cursor)
return Vector_Iterator_Interfaces.Reversible_Iterator'class return Vector_Iterator_Interfaces.Reversible_Iterator'class
is is
It : constant Iterator := It : constant Iterator := (Container'Unchecked_Access, Start.Index);
(Container'Unchecked_Access, Start.Index);
begin begin
return It; return It;
end Iterate; end Iterate;
...@@ -2064,9 +2066,12 @@ package body Ada.Containers.Vectors is ...@@ -2064,9 +2066,12 @@ package body Ada.Containers.Vectors is
end Last; end Last;
function Last (Object : Iterator) return Cursor is function Last (Object : Iterator) return Cursor is
C : constant Cursor := (Object.Container, Object.Container.Last);
begin begin
return C; if Is_Empty (Object.Container.all) then
return No_Element;
end if;
return Cursor'(Object.Container, Object.Container.Last);
end Last; end Last;
------------------ ------------------
......
...@@ -341,7 +341,7 @@ package body Inline is ...@@ -341,7 +341,7 @@ package body Inline is
if Is_Generic_Instance (Pack) then if Is_Generic_Instance (Pack) then
null; null;
-- Do not inline the package if the subprogram is an init. proc -- Do not inline the package if the subprogram is an init proc
-- or other internally generated subprogram, because in that -- or other internally generated subprogram, because in that
-- case the subprogram body appears in the same unit that -- case the subprogram body appears in the same unit that
-- declares the type, and that body is visible to the back end. -- declares the type, and that body is visible to the back end.
......
...@@ -1229,7 +1229,7 @@ package body Sem_Aggr is ...@@ -1229,7 +1229,7 @@ package body Sem_Aggr is
elsif Is_Private_Type (Typ) elsif Is_Private_Type (Typ)
and then Present (Full_View (Typ)) and then Present (Full_View (Typ))
and then (In_Inlined_Body or else In_Instance_Body) and then (In_Inlined_Body or In_Instance_Body)
and then Is_Composite_Type (Full_View (Typ)) and then Is_Composite_Type (Full_View (Typ))
then then
Resolve (N, Full_View (Typ)); Resolve (N, Full_View (Typ));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment