par.adb: Enhance error message handling for configuration file pragmas.
authorArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 Jan 2005 15:40:30 +0000 (16:40 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 3 Jan 2005 15:40:30 +0000 (16:40 +0100)
* par.adb: Enhance error message handling for configuration file
pragmas.

From-SVN: r92846

gcc/ada/par.adb

index 8977706..6c8ec70 100644 (file)
@@ -1208,7 +1208,6 @@ begin
 
    if Configuration_Pragmas then
       declare
-         Ecount  : constant Int     := Serious_Errors_Detected;
          Pragmas : constant List_Id := Empty_List;
          P_Node  : Node_Id;
 
@@ -1224,20 +1223,29 @@ begin
             else
                P_Node := P_Pragma;
 
-               if Serious_Errors_Detected > Ecount then
-                  return Error_List;
-               end if;
+               if Nkind (P_Node) = N_Pragma then
+
+                  --  Give error if bad pragma
+
+                  if Chars (P_Node) > Last_Configuration_Pragma_Name
+                    and then Chars (P_Node) /= Name_Source_Reference
+                  then
+                     if Is_Pragma_Name (Chars (P_Node)) then
+                        Error_Msg_N
+                          ("only configuration pragmas allowed " &
+                           "in configuration file", P_Node);
+                     else
+                        Error_Msg_N
+                          ("unrecognized pragma in configuration file",
+                           P_Node);
+                     end if;
 
-               if Chars (P_Node) > Last_Configuration_Pragma_Name
-                 and then Chars (P_Node) /= Name_Source_Reference
-               then
-                  Error_Msg_SC
-                    ("only configuration pragmas allowed " &
-                     "in configuration file");
-                  return Error_List;
-               end if;
+                  --  Pragma is OK config pragma, so collect it
 
-               Append (P_Node, Pragmas);
+                  else
+                     Append (P_Node, Pragmas);
+                  end if;
+               end if;
             end if;
          end loop;
       end;