[multiple changes]

2014-02-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb: Inhibit iterator rewriting in ASIS mode.

2014-02-19  Arnaud Charlet  <charlet@adacore.com>

	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not generate
	an error on out of range priorities if Relaxed_RM_Semantics.
	* sem_prag.adb (Analyze_Pragma): Ditto.

2014-02-19  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Resolve_Attribute): Detect the case of F'Access
	where F denotes the renaming of an enumeration literal, and
	issue a specialized error message.

From-SVN: r207906
This commit is contained in:
Arnaud Charlet 2014-02-19 16:04:08 +01:00
parent 47fb6ca83f
commit 53f697ee80
5 changed files with 53 additions and 18 deletions

View File

@ -1,3 +1,19 @@
2014-02-19 Ed Schonberg <schonberg@adacore.com>
* sem_ch5.adb: Inhibit iterator rewriting in ASIS mode.
2014-02-19 Arnaud Charlet <charlet@adacore.com>
* sem_ch13.adb (Analyze_Aspect_Specifications): Do not generate
an error on out of range priorities if Relaxed_RM_Semantics.
* sem_prag.adb (Analyze_Pragma): Ditto.
2014-02-19 Bob Duff <duff@adacore.com>
* sem_attr.adb (Resolve_Attribute): Detect the case of F'Access
where F denotes the renaming of an enumeration literal, and
issue a specialized error message.
2014-02-19 Matthew Heaney <heaney@adacore.com>
* a-chtgop.ads (Checked_Index): New operation.

View File

@ -9692,16 +9692,27 @@ package body Sem_Attr is
Error_Msg_F ("prefix of % attribute cannot be abstract", P);
Set_Etype (N, Any_Type);
elsif Convention (Entity (P)) = Convention_Intrinsic then
if Ekind (Entity (P)) = E_Enumeration_Literal then
Error_Msg_F
("prefix of % attribute cannot be enumeration literal",
P);
else
Error_Msg_F
("prefix of % attribute cannot be intrinsic", P);
end if;
elsif Ekind (Entity (P)) = E_Enumeration_Literal then
Error_Msg_F
("prefix of % attribute cannot be enumeration literal",
P);
Set_Etype (N, Any_Type);
-- An attempt to take 'Access of a function that renames an
-- enumeration literal. Issue a specialized error message.
elsif Ekind (Entity (P)) = E_Function
and then Present (Alias (Entity (P)))
and then Ekind (Alias (Entity (P))) = E_Enumeration_Literal
then
Error_Msg_F
("prefix of % attribute cannot be function renaming " &
"an enumeration literal", P);
Set_Etype (N, Any_Type);
elsif Convention (Entity (P)) = Convention_Intrinsic then
Error_Msg_F
("prefix of % attribute cannot be intrinsic", P);
Set_Etype (N, Any_Type);
end if;

View File

@ -1897,7 +1897,10 @@ package body Sem_Ch13 is
Set_Main_Priority
(Main_Unit, UI_To_Int (Expr_Value (Expr)));
else
-- Ignore pragma if Relaxed_RM_Semantics to support
-- other targets/non GNAT compilers.
elsif not Relaxed_RM_Semantics then
Error_Msg_N
("main subprogram priority is out of range",
Expr);

View File

@ -1727,8 +1727,11 @@ package body Sem_Ch5 is
-- Do not perform this expansion in SPARK mode, since the formal
-- verification directly deals with the source form of the iterator.
-- Ditto for ASIS, where the temporary amy hide the transformation
-- of a selected component into a prefixed function call.
and then not GNATprove_Mode
and then not ASIS_Mode
then
declare
Id : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);

View File

@ -17871,26 +17871,28 @@ package body Sem_Prag is
elsif Raises_Constraint_Error (Arg) then
null;
-- Otherwise check in range
-- Otherwise check in range except if Relaxed_RM_Semantics
-- where we ignore the value if out of range.
else
declare
Val : constant Uint := Expr_Value (Arg);
begin
if Val < 0
or else Val > Expr_Value (Expression
(Parent (RTE (RE_Max_Priority))))
if not Relaxed_RM_Semantics
and then
(Val < 0
or else Val > Expr_Value (Expression
(Parent (RTE (RE_Max_Priority)))))
then
Error_Pragma_Arg
("main subprogram priority is out of range", Arg1);
else
Set_Main_Priority
(Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
end if;
end;
end if;
Set_Main_Priority
(Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
-- Load an arbitrary entity from System.Tasking.Stages or
-- System.Tasking.Restricted.Stages (depending on the
-- supported profile) to make sure that one of these packages