+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.
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;
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);
-- 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);
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