Commit 53f697ee by Arnaud Charlet

[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
parent 47fb6ca8
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> 2014-02-19 Matthew Heaney <heaney@adacore.com>
* a-chtgop.ads (Checked_Index): New operation. * a-chtgop.ads (Checked_Index): New operation.
......
...@@ -9692,16 +9692,27 @@ package body Sem_Attr is ...@@ -9692,16 +9692,27 @@ package body Sem_Attr is
Error_Msg_F ("prefix of % attribute cannot be abstract", P); Error_Msg_F ("prefix of % attribute cannot be abstract", P);
Set_Etype (N, Any_Type); Set_Etype (N, Any_Type);
elsif Convention (Entity (P)) = Convention_Intrinsic then elsif Ekind (Entity (P)) = E_Enumeration_Literal then
if Ekind (Entity (P)) = E_Enumeration_Literal then Error_Msg_F
Error_Msg_F ("prefix of % attribute cannot be enumeration literal",
("prefix of % attribute cannot be enumeration literal", P);
P); Set_Etype (N, Any_Type);
else
Error_Msg_F
("prefix of % attribute cannot be intrinsic", P);
end if;
-- 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); Set_Etype (N, Any_Type);
end if; end if;
......
...@@ -1897,7 +1897,10 @@ package body Sem_Ch13 is ...@@ -1897,7 +1897,10 @@ package body Sem_Ch13 is
Set_Main_Priority Set_Main_Priority
(Main_Unit, UI_To_Int (Expr_Value (Expr))); (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 Error_Msg_N
("main subprogram priority is out of range", ("main subprogram priority is out of range",
Expr); Expr);
......
...@@ -1727,8 +1727,11 @@ package body Sem_Ch5 is ...@@ -1727,8 +1727,11 @@ package body Sem_Ch5 is
-- Do not perform this expansion in SPARK mode, since the formal -- Do not perform this expansion in SPARK mode, since the formal
-- verification directly deals with the source form of the iterator. -- 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 GNATprove_Mode
and then not ASIS_Mode
then then
declare declare
Id : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name); Id : constant Entity_Id := Make_Temporary (Loc, 'R', Iter_Name);
......
...@@ -17871,26 +17871,28 @@ package body Sem_Prag is ...@@ -17871,26 +17871,28 @@ package body Sem_Prag is
elsif Raises_Constraint_Error (Arg) then elsif Raises_Constraint_Error (Arg) then
null; null;
-- Otherwise check in range -- Otherwise check in range except if Relaxed_RM_Semantics
-- where we ignore the value if out of range.
else else
declare declare
Val : constant Uint := Expr_Value (Arg); Val : constant Uint := Expr_Value (Arg);
begin begin
if Val < 0 if not Relaxed_RM_Semantics
or else Val > Expr_Value (Expression and then
(Parent (RTE (RE_Max_Priority)))) (Val < 0
or else Val > Expr_Value (Expression
(Parent (RTE (RE_Max_Priority)))))
then then
Error_Pragma_Arg Error_Pragma_Arg
("main subprogram priority is out of range", Arg1); ("main subprogram priority is out of range", Arg1);
else
Set_Main_Priority
(Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
end if; end if;
end; end;
end if; end if;
Set_Main_Priority
(Current_Sem_Unit, UI_To_Int (Expr_Value (Arg)));
-- Load an arbitrary entity from System.Tasking.Stages or -- Load an arbitrary entity from System.Tasking.Stages or
-- System.Tasking.Restricted.Stages (depending on the -- System.Tasking.Restricted.Stages (depending on the
-- supported profile) to make sure that one of these packages -- supported profile) to make sure that one of these packages
......
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