]>
git.saurik.com Git - bison.git/blob - src/complain.h
   1 /* Declaration for error-reporting function for Bison. 
   3    Copyright (C) 2000-2002, 2006, 2009-2012 Free Software Foundation, 
   6    This program is free software: you can redistribute it and/or modify 
   7    it under the terms of the GNU General Public License as published by 
   8    the Free Software Foundation, either version 3 of the License, or 
   9    (at your option) any later version. 
  11    This program is distributed in the hope that it will be useful, 
  12    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  14    GNU General Public License for more details. 
  16    You should have received a copy of the GNU General Public License 
  17    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ 
  20 # define COMPLAIN_H_ 1 
  22 # include "location.h" 
  28 /** Record that a warning is about to be issued, and treat it as an 
  29     error if <tt>warnings_flag & warnings_error</tt>.  This is exported 
  30     only for the sake of Yacc-compatible conflict reports in conflicts.c. 
  31     All other warnings should be implemented in complain.c and should use 
  32     the normal warning format.  */ 
  33 void set_warning_issued (void); 
  35 /** Informative messages, but we proceed.  Report iff 
  36     <tt>warnings_flag & warnings_other</tt>.  */ 
  38 void warn (char const *format
, ...) 
  39   __attribute__ ((__format__ (__printf__
, 1, 2))); 
  41 void warn_at (location loc
, char const *format
, ...) 
  42   __attribute__ ((__format__ (__printf__
, 2, 3))); 
  44 /* Generate a message aligned by an indent. 
  45    When *indent == 0, assign message's indent to *indent, 
  46    When *indent > 0, align the message by *indent value. */ 
  47 void warn_at_indent (location loc
, unsigned *indent
, 
  48                      char const *format
, ...) 
  49   __attribute__ ((__format__ (__printf__
, 3, 4))); 
  51 /** An error, but we continue and die later.  */ 
  53 void complain (char const *format
, ...) 
  54   __attribute__ ((__format__ (__printf__
, 1, 2))); 
  56 void complain_at (location loc
, char const *format
, ...) 
  57   __attribute__ ((__format__ (__printf__
, 2, 3))); 
  59 /* Generate a message aligned by an indent. 
  60    When *indent == 0, assign message's indent to *indent, 
  61    When *indent > 0, align the message by *indent value. */ 
  62 void complain_at_indent (location loc
, unsigned *indent
, 
  63                          char const *format
, ...) 
  64   __attribute__ ((__format__ (__printf__
, 3, 4))); 
  66 /** An incompatibility with POSIX Yacc: mapped either to warn* or 
  67     complain* depending on yacc_flag. */ 
  69 void yacc_at (location loc
, char const *format
, ...) 
  70   __attribute__ ((__format__ (__printf__
, 2, 3))); 
  72 /** A midrule-value warning.  Report iff 
  73     <tt>warnings_flag & warnings_midrule_values</tt>.  */ 
  75 void midrule_value_at (location loc
, char const *format
, ...) 
  76   __attribute__ ((__format__ (__printf__
, 2, 3))); 
  78 /** A fatal error, causing immediate exit.  */ 
  80 void fatal (char const *format
, ...) 
  81   __attribute__ ((__noreturn__
, __format__ (__printf__
, 1, 2))); 
  83 void fatal_at (location loc
, char const *format
, ...) 
  84   __attribute__ ((__noreturn__
, __format__ (__printf__
, 2, 3))); 
  86 /** Whether an error was reported.  */ 
  87 extern bool complaint_issued
; 
  93 #endif /* !COMPLAIN_H_ */