From: Vincent Celier Date: Thu, 16 Jun 2005 08:44:38 +0000 (+0200) Subject: prj-part.adb (Pre_Parse_Context_Clause): Call Set_Is_Not_Last_In_List when the projec... X-Git-Tag: misc/cutover-cvs2svn~2337 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a493557f3ac51eb4c8967a5816f980ca547c2365;p=thirdparty%2Fgcc.git prj-part.adb (Pre_Parse_Context_Clause): Call Set_Is_Not_Last_In_List when the project file in a with clause is not the... 2005-06-14 Vincent Celier * prj-part.adb (Pre_Parse_Context_Clause): Call Set_Is_Not_Last_In_List when the project file in a with clause is not the last one, that is the project file name is followed by a comma. * prj-pp.adb: (First_With_In_List): New Boolean global variable (Print): Issue list of project files separated by commas in with clauses according to the values returned by Is_Not_Last_In_List. * prj-tree.ads, prj-tree.adb: (Is_Not_Last_In_List): New function (Set_Is_Not_Last_In_List): New procedure From-SVN: r101054 --- diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb index 1b100843b428..fe2830a58a74 100644 --- a/gcc/ada/prj-part.adb +++ b/gcc/ada/prj-part.adb @@ -667,7 +667,10 @@ package body Prj.Part is Scan (In_Tree); -- scan past the semicolon. exit Comma_Loop; - elsif Token /= Tok_Comma then + elsif Token = Tok_Comma then + Set_Is_Not_Last_In_List (Current_With_Node, In_Tree); + + else Error_Msg ("expected comma or semi colon", Token_Ptr); exit Comma_Loop; end if; @@ -679,7 +682,6 @@ package body Prj.Part is end loop With_Loop; end Pre_Parse_Context_Clause; - ------------------------------- -- Post_Parse_Context_Clause -- ------------------------------- @@ -1472,7 +1474,7 @@ package body Prj.Part is then -- Invalid name: report an error - Error_Msg ("Expected """ & + Error_Msg ("expected """ & Get_Name_String (Name_Of (Project, In_Tree)) & """", Token_Ptr); end if; @@ -1489,7 +1491,7 @@ package body Prj.Part is if Token /= Tok_EOF then Error_Msg - ("Unexpected text following end of project", Token_Ptr); + ("unexpected text following end of project", Token_Ptr); end if; end if; diff --git a/gcc/ada/prj-pp.adb b/gcc/ada/prj-pp.adb index b1ef31e16f01..9dd7a0a39950 100644 --- a/gcc/ada/prj-pp.adb +++ b/gcc/ada/prj-pp.adb @@ -44,6 +44,11 @@ package body Prj.PP is -- Column number of the last character in the line. Used to avoid -- outputing lines longer than Max_Line_Length. + First_With_In_List : Boolean := True; + -- Indicate that the next with clause is first in a list such as + -- with "A", "B"; + -- First_With_In_List will be True for "A", but not for "B". + procedure Indicate_Tested (Kind : Project_Node_Kind); -- Set the corresponding component of array Not_Tested to False. -- Only called by pragmas Debug. @@ -318,6 +323,7 @@ package body Prj.PP is -- with clause(s) + First_With_In_List := True; Print (First_With_Clause_Of (Node, In_Tree), Indent); Write_Empty_Line (Always => True); end if; @@ -356,20 +362,31 @@ package body Prj.PP is pragma Debug (Indicate_Tested (N_With_Clause)); if Name_Of (Node, In_Tree) /= No_Name then - Print (First_Comment_Before (Node, In_Tree), Indent); - Start_Line (Indent); + if First_With_In_List then + Print (First_Comment_Before (Node, In_Tree), Indent); + Start_Line (Indent); - if Non_Limited_Project_Node_Of (Node, In_Tree) = - Empty_Node - then - Write_String ("limited "); + if Non_Limited_Project_Node_Of (Node, In_Tree) = + Empty_Node + then + Write_String ("limited "); + end if; + + Write_String ("with "); end if; - Write_String ("with "); Output_String (String_Value_Of (Node, In_Tree)); - Write_String (";"); - Write_End_Of_Line_Comment (Node); - Print (First_Comment_After (Node, In_Tree), Indent); + + if Is_Not_Last_In_List (Node, In_Tree) then + Write_String (", "); + First_With_In_List := False; + + else + Write_String (";"); + Write_End_Of_Line_Comment (Node); + Print (First_Comment_After (Node, In_Tree), Indent); + First_With_In_List := True; + end if; end if; Print (Next_With_Clause_Of (Node, In_Tree), Indent); diff --git a/gcc/ada/prj-tree.adb b/gcc/ada/prj-tree.adb index de210e1edb7b..f66db3717dc3 100644 --- a/gcc/ada/prj-tree.adb +++ b/gcc/ada/prj-tree.adb @@ -1006,6 +1006,21 @@ package body Prj.Tree is return In_Tree.Project_Nodes.Table (Node).Flag2; end Is_Extending_All; + ------------------------- + -- Is_Not_Last_In_List -- + ------------------------- + + function Is_Not_Last_In_List + (Node : Project_Node_Id; + In_Tree : Project_Node_Tree_Ref) return Boolean is + begin + pragma Assert + (Node /= Empty_Node + and then + In_Tree.Project_Nodes.Table (Node).Kind = N_With_Clause); + return In_Tree.Project_Nodes.Table (Node).Flag1; + end Is_Not_Last_In_List; + ------------------------------------- -- Imported_Or_Extended_Project_Of -- ------------------------------------- @@ -2104,6 +2119,22 @@ package body Prj.Tree is In_Tree.Project_Nodes.Table (Node).Flag2 := True; end Set_Is_Extending_All; + ----------------------------- + -- Set_Is_Not_Last_In_List -- + ----------------------------- + + procedure Set_Is_Not_Last_In_List + (Node : Project_Node_Id; + In_Tree : Project_Node_Tree_Ref) + is + begin + pragma Assert + (Node /= Empty_Node + and then + In_Tree.Project_Nodes.Table (Node).Kind = N_With_Clause); + In_Tree.Project_Nodes.Table (Node).Flag1 := True; + end Set_Is_Not_Last_In_List; + ----------------- -- Set_Kind_Of -- ----------------- diff --git a/gcc/ada/prj-tree.ads b/gcc/ada/prj-tree.ads index 692b3b6097c8..5ed45b48f73b 100644 --- a/gcc/ada/prj-tree.ads +++ b/gcc/ada/prj-tree.ads @@ -281,6 +281,12 @@ package Prj.Tree is pragma Inline (Is_Extending_All); -- Only valid for N_Project and N_With_Clause + function Is_Not_Last_In_List + (Node : Project_Node_Id; + In_Tree : Project_Node_Tree_Ref) return Boolean; + pragma Inline (Is_Not_Last_In_List); + -- Only valid for N_With_Clause + function First_Variable_Of (Node : Project_Node_Id; In_Tree : Project_Node_Tree_Ref) return Variable_Node_Id; @@ -632,6 +638,11 @@ package Prj.Tree is In_Tree : Project_Node_Tree_Ref); pragma Inline (Set_Is_Extending_All); + procedure Set_Is_Not_Last_In_List + (Node : Project_Node_Id; + In_Tree : Project_Node_Tree_Ref); + pragma Inline (Set_Is_Not_Last_In_List); + procedure Set_First_Variable_Of (Node : Project_Node_Id; In_Tree : Project_Node_Tree_Ref; @@ -949,6 +960,12 @@ package Prj.Tree is -- N_Project_Declaration -- - it indicates that there are unkept comments in the -- project. + -- N_With_Clause + -- - it indicates that this is not the last with in a + -- with clause. It is set for "A", but not for "B" in + -- with "B"; + -- and + -- with "A", "B"; Flag2 : Boolean := False; -- This flag is significant only for: