]> git.saurik.com Git - bison.git/blame - src/complain.h
warnings: move them to complain.c.
[bison.git] / src / complain.h
CommitLineData
a0f6b076 1/* Declaration for error-reporting function for Bison.
7d424de1 2
34136e65 3 Copyright (C) 2000-2002, 2006, 2009-2012 Free Software Foundation,
575619af 4 Inc.
a0f6b076 5
f16b0819
PE
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.
a0f6b076
AD
10
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.
15
16 You should have received a copy of the GNU General Public License
f16b0819 17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
a0f6b076
AD
18
19#ifndef COMPLAIN_H_
ee000ba4 20# define COMPLAIN_H_ 1
a0f6b076 21
ee000ba4
AD
22# include "location.h"
23
e9690142 24# ifdef __cplusplus
a0f6b076 25extern "C" {
ee000ba4 26# endif
a0f6b076 27
d0f11c1b
VS
28/*-------------.
29| --warnings. |
30`-------------*/
31
32enum warnings
33 {
34 Wnone = 0, /**< Issue no warnings. */
35 Werror = 1 << 0, /**< Warnings are treated as errors. */
36 Wmidrule_values = 1 << 1, /**< Unset or unused midrule values. */
37 Wyacc = 1 << 2, /**< POSIXME. */
38 Wconflicts_sr = 1 << 3, /**< S/R conflicts. */
39 Wconflicts_rr = 1 << 4, /**< R/R conflicts. */
40 Wother = 1 << 5, /**< All other warnings. */
41 Wall = ~Werror /**< All above warnings. */
42 };
43
44/** What warnings are issued. */
45extern int warnings_flag;
46
786743d5 47/** Record that a warning is about to be issued, and treat it as an
327db05b 48 error if <tt>warnings_flag & Werror</tt>. This is exported
786743d5
JD
49 only for the sake of Yacc-compatible conflict reports in conflicts.c.
50 All other warnings should be implemented in complain.c and should use
51 the normal warning format. */
52void set_warning_issued (void);
53
c39014ae 54/** Informative messages, but we proceed. Report iff
327db05b 55 <tt>warnings_flag & Wother</tt>. */
a0f6b076 56
81ebdef9 57void warn (char const *format, ...)
52489d44
AD
58 __attribute__ ((__format__ (__printf__, 1, 2)));
59
81ebdef9 60void warn_at (location loc, char const *format, ...)
e9955c83 61 __attribute__ ((__format__ (__printf__, 2, 3)));
a0f6b076 62
66381412
AR
63/* Generate a message aligned by an indent.
64 When *indent == 0, assign message's indent to *indent,
65 When *indent > 0, align the message by *indent value. */
66void warn_at_indent (location loc, unsigned *indent,
67 char const *format, ...)
68 __attribute__ ((__format__ (__printf__, 3, 4)));
69
23eb2a69 70/** An error, but we continue and die later. */
a0f6b076 71
81ebdef9 72void complain (char const *format, ...)
52489d44
AD
73 __attribute__ ((__format__ (__printf__, 1, 2)));
74
81ebdef9 75void complain_at (location loc, char const *format, ...)
e9955c83 76 __attribute__ ((__format__ (__printf__, 2, 3)));
a0f6b076 77
66381412
AR
78/* Generate a message aligned by an indent.
79 When *indent == 0, assign message's indent to *indent,
80 When *indent > 0, align the message by *indent value. */
81void complain_at_indent (location loc, unsigned *indent,
82 char const *format, ...)
83 __attribute__ ((__format__ (__printf__, 3, 4)));
84
4f646c37
AD
85/** An incompatibility with POSIX Yacc: mapped either to warn* or
86 complain* depending on yacc_flag. */
87
88void yacc_at (location loc, char const *format, ...)
89 __attribute__ ((__format__ (__printf__, 2, 3)));
90
c39014ae 91/** A midrule-value warning. Report iff
327db05b 92 <tt>warnings_flag & Wmidrule_values</tt>. */
c39014ae
JD
93
94void midrule_value_at (location loc, char const *format, ...)
95 __attribute__ ((__format__ (__printf__, 2, 3)));
4f646c37 96
23eb2a69 97/** A fatal error, causing immediate exit. */
a0f6b076 98
81ebdef9 99void fatal (char const *format, ...)
ec88357a 100 __attribute__ ((__noreturn__, __format__ (__printf__, 1, 2)));
e9955c83 101
81ebdef9 102void fatal_at (location loc, char const *format, ...)
ec88357a 103 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
a0f6b076 104
23eb2a69 105/** Whether an error was reported. */
ec88357a 106extern bool complaint_issued;
a0f6b076 107
e9690142 108# ifdef __cplusplus
a0f6b076 109}
ee000ba4 110# endif
a0f6b076
AD
111
112#endif /* !COMPLAIN_H_ */