aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/prj-nmsc.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-12-21 13:03:53 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2011-12-21 13:03:53 +0100
commitdea1d3dcea17dfb21bf403133dcc6acd0cad6c29 (patch)
treef290fe9b936622bd1e571848a07a44ee941fb7c7 /gcc/ada/prj-nmsc.adb
parent88115c2a3945dd9eaf0807385e1cd27c298d3d08 (diff)
downloadgcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.zip
gcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.tar.gz
gcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.tar.bz2
[multiple changes]
2011-12-21 Thomas Quinot <quinot@adacore.com> * thread.c, s-oscons-tmplt.c, init.c (pthread_condattr_setclock): For AIX 5.2, define as a dummy weak symbol in init.c. (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC on all versions of AIX. 2011-12-21 Thomas Quinot <quinot@adacore.com> * snames.ads-tmpl, sem_ch8.adb: Minor reformatting. * sem_prag.adb: Minor comment clarification. 2011-12-21 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Report_No_Sources): New argument Lang for the language name as a Name_Id. Do not report no sources if language is not allowed. (Add_Source): Do not add source if language is not allowed. * prj.adb (Add_Restricted_Language): New procedure (Is_Allowed_Language): New function * prj.ads (Add_Restricted_Language): New procedure (Is_Allowed_Language): New function From-SVN: r182577
Diffstat (limited to 'gcc/ada/prj-nmsc.adb')
-rw-r--r--gcc/ada/prj-nmsc.adb77
1 files changed, 72 insertions, 5 deletions
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 678b6e9..af725de 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -486,6 +486,7 @@ package body Prj.Nmsc is
procedure Report_No_Sources
(Project : Project_Id;
+ Lang : Name_Id;
Lang_Name : String;
Data : Tree_Processing_Data;
Location : Source_Ptr;
@@ -642,6 +643,13 @@ package body Prj.Nmsc is
Source_To_Replace : Source_Id := No_Source;
begin
+ -- Nothing to do if the language is not one of the restricted ones
+
+ if not Is_Allowed_Language (Lang_Id.Name) then
+ Id := No_Source;
+ return;
+ end if;
+
-- Check if the same file name or unit is used in the prj tree
Add_Src := True;
@@ -1020,6 +1028,56 @@ package body Prj.Nmsc is
(Project : Project_Id;
Data : in out Tree_Processing_Data)
is
+ procedure Check_Aggregate
+ (Project : Project_Id;
+ Data : in out Tree_Processing_Data);
+ -- Check the aggregate project attributes, reject any not supported
+ -- attributes.
+
+ ---------------------
+ -- Check_Aggregate --
+ ---------------------
+
+ procedure Check_Aggregate
+ (Project : Project_Id;
+ Data : in out Tree_Processing_Data)
+ is
+
+ procedure Check_Not_Defined (Name : Name_Id);
+ -- Report an error if Var is defined
+
+ -----------------------
+ -- Check_Not_Defined --
+ -----------------------
+
+ procedure Check_Not_Defined (Name : Name_Id) is
+ Var : constant Prj.Variable_Value :=
+ Prj.Util.Value_Of
+ (Name,
+ Project.Decl.Attributes,
+ Data.Tree.Shared);
+ begin
+ if not Var.Default then
+ Error_Msg_Name_1 := Name;
+ Error_Msg
+ (Data.Flags, "wrong attribute %% in aggregate library",
+ Var.Location, Project);
+ end if;
+ end Check_Not_Defined;
+
+ begin
+ Check_Not_Defined (Snames.Name_Library_Dir);
+ Check_Not_Defined (Snames.Name_Library_Interface);
+ Check_Not_Defined (Snames.Name_Library_Name);
+ Check_Not_Defined (Snames.Name_Library_Ali_Dir);
+ Check_Not_Defined (Snames.Name_Library_Src_Dir);
+ Check_Not_Defined (Snames.Name_Library_Options);
+ Check_Not_Defined (Snames.Name_Library_Standalone);
+ Check_Not_Defined (Snames.Name_Library_Kind);
+ Check_Not_Defined (Snames.Name_Leading_Library_Options);
+ Check_Not_Defined (Snames.Name_Library_Version);
+ end Check_Aggregate;
+
Shared : constant Shared_Project_Tree_Data_Access := Data.Tree.Shared;
Prj_Data : Project_Processing_Data;
@@ -1058,7 +1116,12 @@ package body Prj.Nmsc is
Check_Configuration (Project, Data);
- if Project.Qualifier /= Aggregate then
+ if Project.Qualifier = Aggregate then
+ -- For aggregate project checks that no library attributes are
+ -- defined.
+ Check_Aggregate (Project, Data);
+
+ else
Check_Library_Attributes (Project, Data);
Check_Package_Naming (Project, Data);
@@ -7745,6 +7808,7 @@ package body Prj.Nmsc is
if Source = No_Source then
Report_No_Sources
(Project.Project,
+ Language.Name,
Get_Name_String (Language.Display_Name),
Data,
Project.Source_List_File_Location,
@@ -8191,21 +8255,23 @@ package body Prj.Nmsc is
procedure Report_No_Sources
(Project : Project_Id;
+ Lang : Name_Id;
Lang_Name : String;
Data : Tree_Processing_Data;
Location : Source_Ptr;
Continuation : Boolean := False)
is
begin
- case Data.Flags.When_No_Sources is
+ if Is_Allowed_Language (Lang) then
+ case Data.Flags.When_No_Sources is
when Silent =>
null;
when Warning | Error =>
declare
Msg : constant String :=
- "<there are no "
- & Lang_Name & " sources in this project";
+ "<there are no "
+ & Lang_Name & " sources in this project";
begin
Error_Msg_Warn := Data.Flags.When_No_Sources = Warning;
@@ -8216,7 +8282,8 @@ package body Prj.Nmsc is
Error_Msg (Data.Flags, Msg, Location, Project);
end if;
end;
- end case;
+ end case;
+ end if;
end Report_No_Sources;
----------------------