+2016-04-20 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Rep_Item_Too_Late): Better error message for
+ an illegal aspect that freezes the entity to which it applies.
+
+2016-04-20 Bob Duff <duff@adacore.com>
+
+ * a-stwibo.ads, a-stzbou.ads
+ ("="): Add overriding keyword before function to avoid crash when
+ compiler is called with -gnatyO (check overriding indicators).
+
+2016-04-20 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma, case Check_Policy): If this
+ is a configuration pragma and it uses the ARG syntax, insert
+ the rewritten pragma after the current one rather than using
+ Insert_Actions.
+
+2016-04-20 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_aggr.adb (Backend_Processing_Possible): Add handling of
+ C back-end.
+
2016-04-20 Hristian Kirtchev <kirtchev@adacore.com>
* s-imgllu.adb, sem_util.adb, s-imgint.adb, s-imguns.adb,
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
High : Natural)
renames Super_Slice;
- function "="
+ overriding function "="
(Left : Bounded_Wide_String;
Right : Bounded_Wide_String) return Boolean
renames Equal;
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, Free Software Foundation, Inc. --
-- --
-- This specification is derived from the Ada Reference Manual for use with --
-- GNAT. The copyright notice above, and the license provisions that follow --
High : Natural)
renames Super_Slice;
- function "="
+ overriding function "="
(Left : Bounded_Wide_Wide_String;
Right : Bounded_Wide_Wide_String) return Boolean
renames Equal;
-- 10. No controlled actions need to be generated for components
+ -- 11. When generating C code, N must be part of a N_Object_Declaration
+
function Backend_Processing_Possible (N : Node_Id) return Boolean is
Typ : constant Entity_Id := Etype (N);
-- Typ is the correct constrained array subtype of the aggregate
return False;
end if;
+ -- Checks 11: (part of an object declaration)
+
+ if Generate_C_Code
+ and then Nkind (Parent (N)) /= N_Object_Declaration
+ and then
+ (Nkind (Parent (N)) /= N_Qualified_Expression
+ or else Nkind (Parent (Parent (N))) /= N_Object_Declaration)
+ then
+ return False;
+ end if;
+
-- Checks on components
-- Recurse to check subaggregates, which may appear in qualified
and then Comes_From_Source (T)
then
+ -- A self-referential aspect is illegal if it forces freezing the
+ -- entity before the corresponding pragma has been analyzed.
+
+ if Nkind_In (N, N_Attribute_Definition_Clause, N_Pragma)
+ and then From_Aspect_Specification (N)
+ then
+ Error_Msg_NE
+ ("aspect specification causes premature freezing of&", T, N);
+ Set_Has_Delayed_Freeze (T, False);
+ return True;
+ end if;
+
Too_Late;
S := First_Subtype (T);
else
declare
- Arg : Node_Id;
- Argx : Node_Id;
- LocP : Source_Ptr;
+ Arg : Node_Id;
+ Argx : Node_Id;
+ LocP : Source_Ptr;
+ New_P : Node_Id;
begin
Arg := Arg1;
-- Construct equivalent old form syntax Check_Policy
-- pragma and insert it to get remaining checks.
- Insert_Action (N,
+ New_P :=
Make_Pragma (LocP,
Chars => Name_Check_Policy,
Pragma_Argument_Associations => New_List (
Expression =>
Make_Identifier (LocP, Chars (Arg))),
Make_Pragma_Argument_Association (Sloc (Argx),
- Expression => Argx))));
+ Expression => Argx)));
Arg := Next (Arg);
+
+ -- For a configuration pragma, insert old form in
+ -- the corresponding file.
+
+ if Is_Configuration_Pragma then
+ Insert_After (N, New_P);
+ Analyze (New_P);
+
+ else
+ Insert_Action (N, New_P);
+ end if;
end loop;
-- Rewrite original Check_Policy pragma to null, since we