[multiple changes]

2009-05-06  Thomas Quinot  <quinot@adacore.com>

	* sem_ch3.adb (Access_Type_Declaration): An access type whose
	designated type is a limited view from a limited with clause (flagged
	From_With_Type) is not itself such a limited view.

2009-05-06  Emmanuel Briot  <briot@adacore.com>

	* prj-nmsc.adb: Remove unused variable.

	* clean.adb, gnatcmd.adb, makeutl.ads, prj-pars.adb, prj-pars.ads,
	prj-proc.ads, prj.ads, switch-m.adb (Subdirs_Option): Moved to
	makeutl.ads, since not all users of prj.ads need this.

From-SVN: r147152
This commit is contained in:
Arnaud Charlet 2009-05-06 10:29:29 +02:00
parent 2854148891
commit 7dd1ab8497
11 changed files with 99 additions and 89 deletions

View File

@ -1,3 +1,17 @@
2009-05-06 Thomas Quinot <quinot@adacore.com>
* sem_ch3.adb (Access_Type_Declaration): An access type whose
designated type is a limited view from a limited with clause (flagged
From_With_Type) is not itself such a limited view.
2009-05-06 Emmanuel Briot <briot@adacore.com>
* prj-nmsc.adb: Remove unused variable.
* clean.adb, gnatcmd.adb, makeutl.ads, prj-pars.adb, prj-pars.ads,
prj-proc.ads, prj.ads, switch-m.adb (Subdirs_Option): Moved to
makeutl.ads, since not all users of prj.ads need this.
2009-05-06 Javier Miranda <miranda@adacore.com>
* exp_aggr.adb (Build_Record_Aggr_Code): Add implicit call to the C++

View File

@ -25,7 +25,7 @@
with ALI; use ALI;
with Csets;
with Makeutl;
with Makeutl; use Makeutl;
with MLib.Tgt; use MLib.Tgt;
with Namet; use Namet;
with Opt; use Opt;

View File

@ -987,7 +987,7 @@ procedure GNATCmd is
Last_Switches.Table (Index).all);
end loop;
-- One switch for the standard GNAT library dir.
-- One switch for the standard GNAT library dir
Last_Switches.Increment_Last;
Last_Switches.Table
@ -1660,15 +1660,17 @@ begin
-- --subdirs=... Specify Subdirs
if Argv'Length > Subdirs_Option'Length and then
if Argv'Length > Makeutl.Subdirs_Option'Length and then
Argv
(Argv'First .. Argv'First + Subdirs_Option'Length - 1) =
Subdirs_Option
(Argv'First ..
Argv'First + Makeutl.Subdirs_Option'Length - 1) =
Makeutl.Subdirs_Option
then
Subdirs :=
new String'
(Argv
(Argv'First + Subdirs_Option'Length .. Argv'Last));
(Argv'First + Makeutl.Subdirs_Option'Length ..
Argv'Last));
Remove_Switch (Arg_Num);

View File

@ -40,6 +40,10 @@ package Makeutl is
Project_Tree : constant Project_Tree_Ref := new Project_Tree_Data;
-- The project tree
Subdirs_Option : constant String := "--subdirs=";
-- Switch used to indicate that the real directories (object, exec,
-- library, ...) are subdirectories of those in the project file.
procedure Add
(Option : String_Access;
To : in out String_List_Access;

View File

@ -410,7 +410,6 @@ package body Prj.Nmsc is
File_Name : File_Name_Type;
Alternate_Languages : out Language_List;
Language : out Language_Ptr;
Language_Name : out Name_Id;
Display_Language_Name : out Name_Id;
Unit : out Name_Id;
Lang_Kind : out Language_Kind;
@ -7270,7 +7269,6 @@ package body Prj.Nmsc is
File_Name : File_Name_Type;
Alternate_Languages : out Language_List;
Language : out Language_Ptr;
Language_Name : out Name_Id;
Display_Language_Name : out Name_Id;
Unit : out Name_Id;
Lang_Kind : out Language_Kind;
@ -7346,12 +7344,10 @@ package body Prj.Nmsc is
Tmp_Lang := Project.Languages;
while Tmp_Lang /= No_Language_Index loop
Language_Name := Tmp_Lang.Name;
if Current_Verbosity = High then
Write_Line
(" Testing language "
& Get_Name_String (Language_Name)
& Get_Name_String (Tmp_Lang.Name)
& " Header_File=" & Header_File'Img);
end if;
@ -7424,7 +7420,6 @@ package body Prj.Nmsc is
Src_Ind : Source_File_Index;
Unit : Name_Id;
Source_To_Replace : Source_Id := No_Source;
Language_Name : Name_Id;
Display_Language_Name : Name_Id;
Lang_Kind : Language_Kind;
Kind : Source_Kind := Spec;
@ -7489,7 +7484,6 @@ package body Prj.Nmsc is
File_Name => File_Name,
Alternate_Languages => Alternate_Languages,
Language => Language,
Language_Name => Language_Name,
Display_Language_Name => Display_Language_Name,
Unit => Unit,
Lang_Kind => Lang_Kind,

View File

@ -45,17 +45,18 @@ package body Prj.Pars is
Project_File_Name : String;
Packages_To_Check : String_List_Access := All_Packages;
When_No_Sources : Error_Warning := Error;
Report_Error : Put_Line_Access := null;
Reset_Tree : Boolean := True;
Is_Config_File : Boolean)
Is_Config_File : Boolean := False)
is
Project_Node_Tree : constant Project_Node_Tree_Ref :=
new Project_Node_Tree_Data;
Project_Node : Project_Node_Id := Empty_Node;
The_Project : Project_Id := No_Project;
Success : Boolean := True;
Current_Dir : constant String := Get_Current_Dir;
Project_Node_Tree : Prj.Tree.Project_Node_Tree_Ref;
begin
Project_Node_Tree := new Project_Node_Tree_Data;
Prj.Tree.Initialize (Project_Node_Tree);
-- Parse the main project file into a tree
@ -72,18 +73,19 @@ package body Prj.Pars is
-- If there were no error, process the tree
if Present (Project_Node) then
if Project_Node /= Empty_Node then
Prj.Proc.Process
(In_Tree => In_Tree,
Project => The_Project,
Success => Success,
From_Project_Node => Project_Node,
From_Project_Node_Tree => Project_Node_Tree,
Report_Error => null,
When_No_Sources => When_No_Sources,
Report_Error => Report_Error,
Reset_Tree => Reset_Tree,
When_No_Sources => When_No_Sources,
Current_Dir => Current_Dir,
Is_Config_File => Is_Config_File);
Prj.Err.Finalize;
if not Success then
@ -93,6 +95,8 @@ package body Prj.Pars is
Project := The_Project;
-- ??? Should free the project_node_tree, no longer useful
exception
when X : others =>

View File

@ -23,7 +23,7 @@
-- --
------------------------------------------------------------------------------
-- Implements the parsing of project files
-- General wrapper for the parsing of project files
package Prj.Pars is
@ -36,21 +36,29 @@ package Prj.Pars is
Project_File_Name : String;
Packages_To_Check : String_List_Access := All_Packages;
When_No_Sources : Error_Warning := Error;
Report_Error : Prj.Put_Line_Access := null;
Reset_Tree : Boolean := True;
Is_Config_File : Boolean);
-- Parse a project files and all its imported project files, in the
-- project tree In_Tree.
Is_Config_File : Boolean := False);
-- Parse and process a project files and all its imported project files, in
-- the project tree In_Tree.
-- All the project files are parsed (through Prj.Tree) to create a tree in
-- memory. That tree is then processed (through Prj.Proc) to create a
-- expanded representation of the tree based on the current scenario
-- variables. This function is only a convenient wrapper over other
-- services provided in the Prj.* package hierarchy.
--
-- If parsing is successful, Project_Id is the project ID
-- of the main project file; otherwise, Project_Id is set
-- to No_Project.
-- If parsing is successful, Project is the project ID of the root project
-- file; otherwise, Project_Id is set to No_Project. Project_Node_Tree is
-- set to the tree (unprocessed) representation of the project file. This
-- tree is permanently correct, whereas Project will need to be recomputed
-- if the scenario variables change.
--
-- Packages_To_Check indicates the packages where any unknown attribute
-- produces an error. For other packages, an unknown attribute produces
-- a warning.
-- produces an error. For other packages, an unknown attribute produces a
-- warning.
--
-- When_No_Sources indicates what should be done when no sources
-- are found in a project for a specified or implied language.
-- When_No_Sources indicates what should be done when no sources are found
-- in a project for a specified or implied language.
--
-- When Reset_Tree is True, all the project data are removed from the
-- project table before processing.

View File

@ -6,7 +6,7 @@
-- --
-- S p e c --
-- --
-- Copyright (C) 2001-2007, Free Software Foundation, Inc. --
-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -31,37 +31,6 @@ with Prj.Tree; use Prj.Tree;
package Prj.Proc is
procedure Process
(In_Tree : Project_Tree_Ref;
Project : out Project_Id;
Success : out Boolean;
From_Project_Node : Project_Node_Id;
From_Project_Node_Tree : Project_Node_Tree_Ref;
Report_Error : Put_Line_Access;
When_No_Sources : Error_Warning := Error;
Reset_Tree : Boolean := True;
Current_Dir : String := "";
Is_Config_File : Boolean);
-- Process a project file tree into project file data structures. If
-- Report_Error is null, use the error reporting mechanism. Otherwise,
-- report errors using Report_Error.
--
-- Current_Dir is for optimization purposes, avoiding extra system calls.
--
-- When_No_Sources indicates what should be done when no sources are found
-- in a project for a specified or implied language.
--
-- When Reset_Tree is True, all the project data are removed from the
-- project table before processing.
--
-- Process is a bit of a junk name, how about Process_Project_Tree???
--
-- The two procedures that follow are implementing procedure Process in
-- two successive phases. They are used by gprbuild/gprclean to add the
-- configuration attributes between the two phases.
--
-- Is_Config_File should be true if Project is a config file (.cgpr)
procedure Process_Project_Tree_Phase_1
(In_Tree : Project_Tree_Ref;
Project : out Project_Id;
@ -70,7 +39,23 @@ package Prj.Proc is
From_Project_Node_Tree : Project_Node_Tree_Ref;
Report_Error : Put_Line_Access;
Reset_Tree : Boolean := True);
-- See documentation of parameters in procedure Process above
-- Process a project tree (ie the direct resulting of parsing a .gpr file)
-- based on the current scenario variables.
--
-- The result of this phase_1 is a partial project tree (Project) where
-- only a few fields have been initialized (in particular the list of
-- languages). These are the fields that are necessary to run gprconfig if
-- needed to automatically generate a configuration file. This first phase
-- of the processing does not require a configuration file.
--
-- If Report_Error is null, use the error reporting mechanism. Otherwise,
-- report errors using Report_Error.
--
-- When_No_Sources indicates what should be done when no sources are found
-- in a project for a specified or implied language.
--
-- When Reset_Tree is True, all the project data are removed from the
-- project table before processing.
procedure Process_Project_Tree_Phase_2
(In_Tree : Project_Tree_Ref;
@ -82,6 +67,28 @@ package Prj.Proc is
When_No_Sources : Error_Warning := Error;
Current_Dir : String;
Is_Config_File : Boolean);
-- See documentation of parameters in procedure Process above
-- Perform the second phase of the processing, filling the rest of the
-- project with the information extracted from the project tree. This phase
-- requires that the configuration file has already been parsed (in fact
-- we currently assume that the contents of the configuration file has
-- been included in Project through Confgpr.Apply_Config_File). The
-- parameters are the same as for phase_1, with the addition of:
--
-- Current_Dir is for optimization purposes, avoiding extra system calls.
--
-- Is_Config_File should be true if Project is a config file (.cgpr)
procedure Process
(In_Tree : Project_Tree_Ref;
Project : out Project_Id;
Success : out Boolean;
From_Project_Node : Project_Node_Id;
From_Project_Node_Tree : Project_Node_Tree_Ref;
Report_Error : Put_Line_Access;
When_No_Sources : Error_Warning := Error;
Reset_Tree : Boolean := True;
Current_Dir : String := "";
Is_Config_File : Boolean);
-- Performs the two phases of the processing
end Prj.Proc;

View File

@ -44,10 +44,6 @@ package Prj is
-- Name used to replace others as an index of an associative array
-- attribute in situations where this is allowed.
Subdirs_Option : constant String := "--subdirs=";
-- Switch used to indicate that the real directories (object, exec,
-- library, ...) are subdirectories of those in the project file.
Subdirs : String_Ptr := null;
-- The value after the equal sign in switch --subdirs=...
-- Contains the relative subdirectory.

View File

@ -1276,10 +1276,6 @@ package body Sem_Ch3 is
procedure Access_Type_Declaration (T : Entity_Id; Def : Node_Id) is
S : constant Node_Id := Subtype_Indication (Def);
P : constant Node_Id := Parent (Def);
Desig : Entity_Id;
-- Designated type
begin
-- Check for permissible use of incomplete type
@ -1331,22 +1327,6 @@ package body Sem_Ch3 is
Init_Size_Align (T);
end if;
Desig := Designated_Type (T);
-- If designated type is an imported tagged type, indicate that the
-- access type is also imported, and therefore restricted in its use.
-- The access type may already be imported, so keep setting otherwise.
-- Ada 2005 (AI-50217): If the non-limited view of the designated type
-- is available, use it as the designated type of the access type, so
-- that the back-end gets a usable entity.
if From_With_Type (Desig)
and then Ekind (Desig) /= E_Access_Type
then
Set_From_With_Type (T);
end if;
-- Note that Has_Task is always false, since the access type itself
-- is not a task type. See Einfo for more description on this point.
-- Exactly the same consideration applies to Has_Controlled_Component.

View File

@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
-- Copyright (C) 2001-2008, Free Software Foundation, Inc. --
-- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@ -24,6 +24,7 @@
------------------------------------------------------------------------------
with Debug; use Debug;
with Makeutl; use Makeutl;
with Osint; use Osint;
with Opt; use Opt;
with Prj; use Prj;