+2009-08-17 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch3.adb (Build_Discriminant_Formals): If the discriminals already
+ exist, as is the case for synchronized types, use the type of the
+ discriminal in the parameter specification, to prevent a spurious
+ subtype mismatch in gigi.
+
+2009-08-17 Robert Dewar <dewar@adacore.com>
+
+ * prj-env.adb: Minor reformatting
+ * make.adb: Minor reformatting
+ Comment updates
+
+2009-08-17 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch7.adb (Wrap_Transient_Expression): Update comments.
+
+2009-08-17 Emmanuel Briot <briot@adacore.com>
+
+ * prj-part.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-conf.adb
+ (Processing_Flags.Require_Obj_Dirs): new field, which controls whether
+ object directories must be present. In the case of gprclean at least,
+ these are optional (if they do not exist there is nothing to clean)
+
2009-08-17 Robert Dewar <dewar@adacore.com>
* prj-env.adb: Minor reformatting
(Rec_Id : Entity_Id;
Use_Dl : Boolean) return List_Id;
-- This function uses the discriminants of a type to build a list of
- -- formal parameters, used in the following function. If the flag Use_Dl
- -- is set, the list is built using the already defined discriminals
- -- of the type. Otherwise new identifiers are created, with the source
- -- names of the discriminants.
+ -- formal parameters, used in Build_Init_Procedure among other places.
+ -- If the flag Use_Dl is set, the list is built using the already
+ -- defined discriminals of the type, as is the case for concurrent
+ -- types with discriminants. Otherwise new identifiers are created,
+ -- with the source names of the discriminants.
function Build_Equivalent_Array_Aggregate (T : Entity_Id) return Node_Id;
-- This function builds a static aggregate that can serve as the initial
Parameter_List : constant List_Id := New_List;
D : Entity_Id;
Formal : Entity_Id;
+ Formal_Type : Entity_Id;
Param_Spec_Node : Node_Id;
begin
if Use_Dl then
Formal := Discriminal (D);
+ Formal_Type := Etype (Formal);
else
Formal := Make_Defining_Identifier (Loc, Chars (D));
+ Formal_Type := Etype (D);
end if;
Param_Spec_Node :=
Make_Parameter_Specification (Loc,
Defining_Identifier => Formal,
Parameter_Type =>
- New_Reference_To (Etype (D), Loc));
+ New_Reference_To (Formal_Type, Loc));
Append (Param_Spec_Node, Parameter_List);
Next_Discriminant (D);
end loop;
Loc : constant Source_Ptr := Sloc (N);
E : constant Entity_Id := Make_Temporary (Loc, 'E', N);
Etyp : constant Entity_Id := Etype (N);
-
- Expr : constant Node_Id := Relocate_Node (N);
- -- Capture this node because the call to Adjust_SCIL_Node can ???
+ Expr : constant Node_Id := Relocate_Node (N);
begin
-- If the relocated node is a function call then check if some SCIL
-- the fact that this ALI file is read-only.
procedure Process_Multilib;
- -- Add appropriate --RTS argument to handle multilib.
+ -- Add appropriate --RTS argument to handle multilib
----------------------------------------------------
-- Compiler, Binder & Linker Data and Subprograms --
----------------------
procedure Process_Multilib is
-
Output_FD : File_Descriptor;
Output_Name : String_Access;
Arg_Index : Natural := 0;
Arg_Index := Arg_Index + 1;
Args (Arg_Index) := new String'(Argv);
end if;
-
end;
end loop;
Multilib_Gcc := Gcc;
end if;
- Multilib_Gcc_Path :=
- GNAT.OS_Lib.Locate_Exec_On_Path (Multilib_Gcc.all);
+ Multilib_Gcc_Path := GNAT.OS_Lib.Locate_Exec_On_Path (Multilib_Gcc.all);
Create_Temp_File (Output_FD, Output_Name);
+
if Output_FD = Invalid_FD then
return;
end if;
- GNAT.OS_Lib.Spawn (Multilib_Gcc_Path.all, Args, Output_FD,
- Return_Code, False);
+ GNAT.OS_Lib.Spawn
+ (Multilib_Gcc_Path.all, Args, Output_FD, Return_Code, False);
Close (Output_FD);
+
if Return_Code /= 0 then
return;
end if;
Output_FD := Open_Read (Output_Name.all, Binary);
+
if Output_FD = Invalid_FD then
return;
end if;
end if;
Scan_Make_Arg ("-margs", And_Save => True);
- Scan_Make_Arg ("--RTS=" & Line (1 .. N_Read),
- And_Save => True);
-
+ Scan_Make_Arg ("--RTS=" & Line (1 .. N_Read), And_Save => True);
end Process_Multilib;
-----------------------------
Seen : Project_Boolean_Htable.Instance := Project_Boolean_Htable.Nil;
procedure Recurse (Prj : Project_Id; Depth : Natural);
+ -- Recursive procedure that does the work, keeping track of the depth
-------------
-- Recurse --
-- Add_To_Buffer --
-------------------
- -- Wouldn't it be more consistent to use a Table for Buffer ???
-
procedure Add_To_Buffer
(S : String;
Buffer : in out String_Access;
declare
New_Buffer : constant String_Access :=
new String (1 .. 2 * Buffer'Last);
-
begin
New_Buffer (1 .. Buffer_Last) := Buffer (1 .. Buffer_Last);
Free (Buffer);