summaryrefslogtreecommitdiff
path: root/gcc/ada/binderr.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-09 10:38:54 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-09 10:38:54 +0000
commit15175b09198ccc90607e9d00c38dbc3321c0a5f2 (patch)
tree31ba08971e0c8db8e92b164c64a7ddadbd742ba1 /gcc/ada/binderr.adb
parent7efd77ab65d7f00004ea2f4f4ebf554e10037289 (diff)
downloadgcc-15175b09198ccc90607e9d00c38dbc3321c0a5f2.tar.gz
2009-04-09 Robert Dewar <dewar@adacore.com>
* binderr.adb, errout.adb, errutil.adb: New circuitry for handling Maximum_Messages. * erroutc.adb, erroutc.ads (Warnings_Suppressed): Now tests global warning status as well. * opt.ads (Maximum_Messages): New name for Maximum_Errors. * switch-b.adb, switch-c.adb: Change name Maximum_Errors to Maximum_Messages. * bindusg.adb, usage.adb: Update line for -gnatm switch * gnat_ugn.texi: Update documentation for -gnatmnn compiler switch and -mnn binder switch. * sem_ch10.adb: Minor reformatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145822 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/binderr.adb')
-rw-r--r--gcc/ada/binderr.adb22
1 files changed, 18 insertions, 4 deletions
diff --git a/gcc/ada/binderr.adb b/gcc/ada/binderr.adb
index 4f90ee68f03..830a2f17715 100644
--- a/gcc/ada/binderr.adb
+++ b/gcc/ada/binderr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2007, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -64,10 +64,24 @@ package body Binderr is
Error_Msg_Output (Msg, Info => False);
end if;
- if Warnings_Detected + Errors_Detected > Maximum_Errors then
- raise Unrecoverable_Error;
+ -- If too many warnings print message and then turn off warnings
+
+ if Warnings_Detected = Maximum_Messages then
+ Set_Standard_Error;
+ Write_Line ("maximum number of warnings reached");
+ Write_Line ("further warnings will be suppressed");
+ Set_Standard_Output;
+ Warning_Mode := Suppress;
end if;
+ -- If too many errors print message and give fatal error
+
+ if Errors_Detected = Maximum_Messages then
+ Set_Standard_Error;
+ Write_Line ("fatal error: maximum number of errors exceeded");
+ Set_Standard_Output;
+ raise Unrecoverable_Error;
+ end if;
end Error_Msg;
--------------------
@@ -99,7 +113,7 @@ package body Binderr is
Warning : Boolean := False;
begin
- if Warnings_Detected + Errors_Detected > Maximum_Errors then
+ if Warnings_Detected + Errors_Detected > Maximum_Messages then
Write_Str ("error: maximum errors exceeded");
Write_Eol;
return;