aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Celier <celier@gnat.com>2004-10-04 14:55:06 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2004-10-04 16:55:06 +0200
commit9a080ea3464b484cb6bdf464a85bbdab96aa1c95 (patch)
tree9970145e03d9788feac654a75df1fd90aabb55fc
parent51004cb5839a2825ae15b563e7054ac66deda24a (diff)
downloadgcc-9a080ea3464b484cb6bdf464a85bbdab96aa1c95.zip
gcc-9a080ea3464b484cb6bdf464a85bbdab96aa1c95.tar.gz
gcc-9a080ea3464b484cb6bdf464a85bbdab96aa1c95.tar.bz2
prj-part.adb (Parse_Single_Project): Call Is_Extending_All (Extended_Project) only if Extended_Project is defined...
2004-10-04 Vincent Celier <celier@gnat.com> * prj-part.adb (Parse_Single_Project): Call Is_Extending_All (Extended_Project) only if Extended_Project is defined, to avoid assertion error. (Post_Parse_Context_Clause): Always call Set_Path_Name_Of with a resolved path. (Parse_Single_Project): Ditto. * prj-env.adb (Set_Ada_Paths.Add.Recursive_Add): Do not call Add_To_Project_Path for virtual projects. From-SVN: r88491
-rw-r--r--gcc/ada/ChangeLog12
-rw-r--r--gcc/ada/prj-env.adb6
-rw-r--r--gcc/ada/prj-part.adb31
3 files changed, 33 insertions, 16 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 463a4d3..fda97b1 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,17 @@
2004-10-04 Vincent Celier <celier@gnat.com>
+ * prj-part.adb (Parse_Single_Project): Call Is_Extending_All
+ (Extended_Project) only if Extended_Project is defined, to avoid
+ assertion error.
+ (Post_Parse_Context_Clause): Always call Set_Path_Name_Of with a
+ resolved path.
+ (Parse_Single_Project): Ditto.
+
+ * prj-env.adb (Set_Ada_Paths.Add.Recursive_Add): Do not call
+ Add_To_Project_Path for virtual projects.
+
+2004-10-04 Vincent Celier <celier@gnat.com>
+
* mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb,
mlib-tgt-hpux.adb, mlib-tgt-linux.adb, mlib-tgt-solaris.adb,
mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb, mlib-tgt-mingw.adb,
diff --git a/gcc/ada/prj-env.adb b/gcc/ada/prj-env.adb
index a736641..b751e6be 100644
--- a/gcc/ada/prj-env.adb
+++ b/gcc/ada/prj-env.adb
@@ -1970,10 +1970,10 @@ package body Prj.Env is
if Data.Library then
Add_To_Object_Path (Data.Library_Dir);
- else
- -- For a non library project, add the object
- -- directory.
+ -- For a non-library project, add the object
+ -- directory, if it is not a virtual project.
+ elsif not Data.Virtual then
Add_To_Object_Path (Data.Object_Directory);
end if;
end if;
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index aaf45ac..63700b0 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -707,6 +707,12 @@ package body Prj.Part is
(Original_Path,
Project_Directory_Path);
+ Resolved_Path : constant String :=
+ Normalize_Pathname
+ (Imported_Path_Name,
+ Resolve_Links => True,
+ Case_Sensitive => False);
+
Withed_Project : Project_Node_Id := Empty_Node;
begin
@@ -750,21 +756,17 @@ package body Prj.Part is
(Current_Project, Current_With.Path);
Set_Location_Of (Current_Project, Current_With.Location);
- -- If this is a "limited with", check if we have
- -- a circularity; if we have one, get the project id
- -- of the limited imported project file, and don't
- -- parse it.
+ -- If this is a "limited with", check if we have a circularity.
+ -- If we have one, get the project id of the limited imported
+ -- project file, and do not parse it.
if Limited_With and then Project_Stack.Last > 1 then
declare
- Normed : constant String :=
- Normalize_Pathname (Imported_Path_Name);
Canonical_Path_Name : Name_Id;
begin
- Name_Len := Normed'Length;
- Name_Buffer (1 .. Name_Len) := Normed;
- Canonical_Case_File_Name (Name_Buffer (1 .. Name_Len));
+ Name_Len := Resolved_Path'Length;
+ Name_Buffer (1 .. Name_Len) := Resolved_Path;
Canonical_Path_Name := Name_Find;
for Index in 1 .. Project_Stack.Last loop
@@ -818,8 +820,9 @@ package body Prj.Part is
To => Withed_Project,
Limited_With => Limited_With);
Set_Name_Of (Current_Project, Name_Of (Withed_Project));
- Name_Len := Imported_Path_Name'Length;
- Name_Buffer (1 .. Name_Len) := Imported_Path_Name;
+
+ Name_Len := Resolved_Path'Length;
+ Name_Buffer (1 .. Name_Len) := Resolved_Path;
Set_Path_Name_Of (Current_Project, Name_Find);
if Extends_All then
@@ -1038,7 +1041,7 @@ package body Prj.Part is
Project := Default_Project_Node (Of_Kind => N_Project);
Project_Stack.Table (Project_Stack.Last).Id := Project;
Set_Directory_Of (Project, Project_Directory);
- Set_Path_Name_Of (Project, Normed_Path_Name);
+ Set_Path_Name_Of (Project, Canonical_Path_Name);
Set_Location_Of (Project, Token_Ptr);
Expect (Tok_Project, "PROJECT");
@@ -1271,7 +1274,9 @@ package body Prj.Part is
-- A project that extends an extending-all project is also
-- an extending-all project.
- if Is_Extending_All (Extended_Project) then
+ if Extended_Project /= Empty_Node
+ and then Is_Extending_All (Extended_Project)
+ then
Set_Is_Extending_All (Project);
end if;
end if;