summaryrefslogtreecommitdiff
path: root/gcc/ada/prj-part.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/prj-part.adb')
-rw-r--r--gcc/ada/prj-part.adb32
1 files changed, 21 insertions, 11 deletions
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb
index 8c89aae9af5..aaf45ac7fab 100644
--- a/gcc/ada/prj-part.adb
+++ b/gcc/ada/prj-part.adb
@@ -161,22 +161,26 @@ package body Prj.Part is
(Context_Clause : With_Id;
Imported_Projects : out Project_Node_Id;
Project_Directory : Name_Id;
- From_Extended : Extension_Origin);
+ From_Extended : Extension_Origin;
+ In_Limited : Boolean);
-- Parse the imported projects that have been stored in table Withs,
-- if any. From_Extended is used for the call to Parse_Single_Project
- -- below.
+ -- below. When In_Limited is True, the importing path includes at least
+ -- one "limited with".
procedure Parse_Single_Project
(Project : out Project_Node_Id;
Extends_All : out Boolean;
Path_Name : String;
Extended : Boolean;
- From_Extended : Extension_Origin);
+ From_Extended : Extension_Origin;
+ In_Limited : Boolean);
-- Parse a project file.
-- Recursive procedure: it calls itself for imported and extended
-- projects. When From_Extended is not None, if the project has already
-- been parsed and is an extended project A, return the ultimate
- -- (not extended) project that extends A.
+ -- (not extended) project that extends A. When In_Limited is True,
+ -- the importing path includes at least one "limited with".
function Project_Path_Name_Of
(Project_File_Name : String;
@@ -472,7 +476,8 @@ package body Prj.Part is
Extends_All => Dummy,
Path_Name => Path_Name,
Extended => False,
- From_Extended => None);
+ From_Extended => None,
+ In_Limited => False);
-- If Project is an extending-all project, create the eventual
-- virtual extending projects and check that there are no illegally
@@ -668,7 +673,8 @@ package body Prj.Part is
(Context_Clause : With_Id;
Imported_Projects : out Project_Node_Id;
Project_Directory : Name_Id;
- From_Extended : Extension_Origin)
+ From_Extended : Extension_Origin;
+ In_Limited : Boolean)
is
Current_With_Clause : With_Id := Context_Clause;
@@ -690,7 +696,7 @@ package body Prj.Part is
Current_With := Withs.Table (Current_With_Clause);
Current_With_Clause := Current_With.Next;
- Limited_With := Current_With.Limited_With;
+ Limited_With := In_Limited or Current_With.Limited_With;
declare
Original_Path : constant String :=
@@ -783,7 +789,8 @@ package body Prj.Part is
Extends_All => Extends_All,
Path_Name => Imported_Path_Name,
Extended => False,
- From_Extended => From_Extended);
+ From_Extended => From_Extended,
+ In_Limited => Limited_With);
else
Extends_All := Is_Extending_All (Withed_Project);
@@ -833,7 +840,8 @@ package body Prj.Part is
Extends_All : out Boolean;
Path_Name : String;
Extended : Boolean;
- From_Extended : Extension_Origin)
+ From_Extended : Extension_Origin;
+ In_Limited : Boolean)
is
Normed_Path_Name : Name_Id;
Canonical_Path_Name : Name_Id;
@@ -1159,7 +1167,8 @@ package body Prj.Part is
(Context_Clause => First_With,
Imported_Projects => Imported_Projects,
Project_Directory => Project_Directory,
- From_Extended => From_Ext);
+ From_Extended => From_Ext,
+ In_Limited => In_Limited);
Set_First_With_Clause_Of (Project, Imported_Projects);
end;
@@ -1255,7 +1264,8 @@ package body Prj.Part is
Extends_All => Extends_All,
Path_Name => Extended_Project_Path_Name,
Extended => True,
- From_Extended => From_Ext);
+ From_Extended => From_Ext,
+ In_Limited => In_Limited);
end;
-- A project that extends an extending-all project is also