+2014-08-01 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_res.adb (Check_Parameterless_Call): Use Relocate_Node
+ to create the name of the parameterless call, rather than
+ New_Copy, to preserve the tree structure when the name is a
+ complex expression, e.g. a selected component that denotes a
+ protected operation, whose prefix is itself a selected component.
+
+2014-08-01 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use
+ Unit_Declaration_Node to retrieve body when inlining, to handle
+ properly subprogram child units.
+
+2014-08-01 Robert Dewar <dewar@adacore.com>
+
+ * sem_attr.adb: Minor reformatting.
+
2014-08-01 Vincent Celier <celier@adacore.com>
* debug.adb: Minor documentation addition for -dn switch.
-- because it was valid in the generic unit. Ditto if this is
-- an inlining of a function declared in an instance.
- if In_Instance
- or else In_Inlined_Body
- then
+ if In_Instance or else In_Inlined_Body then
return;
-- For sure OK if we have a real private type itself, but must
-- The prefix denotes either the task type, or else a
-- single task whose task type is being analyzed.
- if (Is_Type (Tsk)
- and then Tsk = S)
-
+ if (Is_Type (Tsk) and then Tsk = S)
or else (not Is_Type (Tsk)
- and then Etype (Tsk) = S
- and then not (Comes_From_Source (S)))
+ and then Etype (Tsk) = S
+ and then not (Comes_From_Source (S)))
then
null;
else
begin
Get_First_Interp (P, Index, It);
-
while Present (It.Nam) loop
if It.Nam = Ent then
null;
when Attribute_Descriptor_Size =>
Check_E0;
- if not Is_Entity_Name (P)
- or else not Is_Type (Entity (P))
- then
+ if not Is_Entity_Name (P) or else not Is_Type (Entity (P)) then
Error_Attr_P ("prefix of attribute % must denote a type");
end if;
if Etype (P) = Standard_Exception_Type then
Set_Etype (N, RTE (RE_Exception_Id));
- -- Ada 2005 (AI-345): Attribute 'Identity may be applied to
- -- task interface class-wide types.
+ -- Ada 2005 (AI-345): Attribute 'Identity may be applied to task
+ -- interface class-wide types.
elsif Is_Task_Type (Etype (P))
or else (Is_Access_Type (Etype (P))
else
declare
- Body_Spec : constant Node_Id := Parent (Body_Id);
- Subp_Body : constant Node_Id := Parent (Body_Spec);
+ Subp_Body : constant Node_Id :=
+ Unit_Declaration_Node (Body_Id);
Subp_Decl : constant List_Id := Declarations (Subp_Body);
begin