]> andersk Git - splint.git/blame - src/Headers/llerror.h
Initial revision
[splint.git] / src / Headers / llerror.h
CommitLineData
885824d3 1/*
2** Copyright (C) University of Virginia, Massachusetts Institue of Technology 1994-2000.
3** See ../LICENSE for license information.
4**
5*/
6
7# ifndef LLERROR_H
8# define LLERROR_H
9
10extern bool /*@alt void@*/ check (bool p_x);
11# define check(p_x) doCheck (p_x, cstring_fromChars (#p_x), cstring_makeLiteralTemp (__FILE__), __LINE__)
12
13extern bool doCheck (bool p_x, cstring p_pred, cstring p_file, int p_line);
14
15extern /*@falseexit@*/ void llassert (/*@sef@*/ bool p_test);
16# define llassert(tst) \
17 do { if (!(tst)) { \
18 if (context_getFlag (FLG_TRYTORECOVER)) checkParseError (); \
19 lldiagmsg (message ("%s:%d: at source point", \
20 cstring_makeLiteralTemp (__FILE__), __LINE__)); \
21 llbuglit ("llassert failed: " #tst); \
22 }} while (FALSE)
23
24extern /*@falseexit@*/ void llassertfatal (/*@sef@*/ bool p_test);
25# define llassertfatal(tst) \
26 do { if (!(tst)) \
27 llfatalbug (message("%s:%d: fatal llassert failed: " #tst, \
28 cstring_makeLiteralTemp (__FILE__), __LINE__)); \
29 } while (FALSE)
30
31/*
32** llassertprint and llassertprintret are in lclintMacros.nf
33*/
34
35extern void llmsg (/*@only@*/ cstring p_s) /*@modifies g_msgstream@*/ ;
36extern void lldiagmsg (/*@only@*/ cstring p_s) /*@modifies stderr@*/ ;
37extern void llmsgplain (/*@only@*/ cstring p_s) /*@modifies g_msgstream@*/ ;
38extern void llhint (/*@only@*/ cstring p_s)
39 /*@globals g_currentloc, g_msgstream;@*/
40 /*@modifies g_msgstream@*/ ;
41extern /*@exits@*/ void llfatalbug (/*@only@*/ cstring p_s)
42 /*@globals g_currentloc@*/
43 /*@modifies stderr@*/ ;
44extern void llgloberror (/*@only@*/ cstring p_s) /*@modifies g_msgstream@*/ ;
45extern bool llgenerror (flagcode p_o, /*@only@*/ cstring p_s, fileloc p_fl) /*@modifies g_msgstream@*/ ;
46extern bool llgenhinterror (flagcode p_o, /*@only@*/ cstring p_s, /*@only@*/ cstring p_hint,
47 fileloc p_fl) /*@modifies g_msgstream@*/ ;
48extern void llerror (flagcode p_o, /*@only@*/ cstring p_s)
49 /*@globals g_msgstream, g_currentloc@*/
50 /*@modifies g_msgstream@*/ ;
51extern void llgenmsg (/*@only@*/ cstring p_s, fileloc p_fl) /*@modifies g_msgstream@*/ ;
52extern /*@exits@*/ void llfatalerror (/*@only@*/ cstring p_s) /*@modifies g_msgstream@*/ ;
53extern /*@exits@*/ void llfatalerrorLoc (/*@only@*/ cstring p_s)
54 /*@globals g_currentloc@*/
55 /*@modifies stderr@*/ ;
56extern void llparseerror (/*@only@*/ cstring p_s)
57 /*@globals g_msgstream, g_currentloc@*/
58 /*@modifies g_msgstream@*/ ;
59
60# ifndef NOLCL
61extern /*@exits@*/ void lclplainfatalerror (/*@only@*/ cstring p_msg) /*@modifies g_msgstream@*/ ;
62extern /*@exits@*/ void lclfatalbug (/*@temp@*/ char *p_msg) /*@modifies g_msgstream@*/ ;
63extern int lclNumberErrors (void) /*@*/ ;
64extern bool lclHadNewError (void) /*@modifies internalState@*/ ;
65extern /*@exits@*/ void lclfatalerror (ltoken p_t, /*@only@*/ cstring p_msg);
66extern void lclerror (ltoken p_t, /*@only@*/ cstring p_msg);
67
68extern void lclbug (/*@only@*/ cstring p_s);
69extern void lclplainerror (/*@only@*/ cstring p_msg);
70extern bool lclHadError (void);
71extern void lclRedeclarationError (ltoken p_id);
72# endif
73
74extern void flagWarning (/*@observer@*/ cstring p_s) /*@modifies g_msgstream@*/ ;
75
76extern /*@exits@*/ void llbugaux (cstring p_file, int p_line, /*@only@*/ cstring p_s)
77 /*@globals g_msgstream, g_currentloc@*/
78 /*@modifies *g_msgstream@*/ ;
79
80extern /*@exits@*/ void llbug (/*@only@*/ cstring p_s)
81 /*@globals g_msgstream, g_currentloc@*/
82 /*@modifies *g_msgstream@*/ ;
83
84 /* doesn't really exit, but don't mind errors if it doesn't */
85# define llbug(s) llbugaux (cstring_makeLiteralTemp (__FILE__), __LINE__, s)
86
87extern void llquietbugaux (/*@only@*/ cstring p_s, cstring, int) /*@modifies *g_msgstream@*/ ;
88extern void llquietbug (/*@only@*/ cstring) /*@modifies *g_msgstream@*/ ;
89# define llquietbug(s) llquietbugaux (s, cstring_makeLiteralTemp (__FILE__), __LINE__)
90
91extern void llcontbug (/*@only@*/ cstring p_s) /*@modifies *g_msgstream@*/ ;
92 /* doesn't really exit, but don't mind errors if it doesn't */
93# define llcontbug(s) (llbug (s))
94
95extern void cleanupMessages (void)
96 /*@globals g_msgstream, g_currentloc;@*/
97 /*@modifies g_msgstream, internalState@*/ ;
98
99/*
100** Report error iff f1 and f2 are set.
101*/
102
103extern bool
104optgenerror2 (flagcode p_f1, flagcode p_f2, /*@only@*/ cstring p_s, fileloc p_loc)
105 /*@modifies *g_msgstream, internalState@*/ ;
106
107/*
108** Report error if f1 is set and f2 is not set.
109*/
110
111extern bool
112optgenerror2n (flagcode p_f1, flagcode p_f2, /*@only@*/ cstring p_s, fileloc p_loc)
113 /*@modifies *g_msgstream, internalState@*/ ;
114
115extern bool lloptgenerror (flagcode p_o, /*@only@*/ cstring p_s, fileloc p_loc)
116 /*@modifies *g_msgstream, internalState@*/ ;
117
118extern bool llnoptgenerror (flagcode p_o, /*@only@*/ cstring p_s, fileloc p_loc)
119 /*@modifies *g_msgstream, internalState@*/ ;
120
121extern bool llgenformattypeerror (ctype p_t1, exprNode p_e1,
122 ctype p_t2, exprNode p_e2,
123 /*@only@*/ cstring p_s, fileloc p_fl)
124 /*@modifies *g_msgstream, internalState@*/ ;
125
126extern bool llgentypeerror (ctype p_t1, exprNode p_e1,
127 ctype p_t2, exprNode p_e2,
128 /*@only@*/ cstring p_s,
129 fileloc p_fl)
130 /*@modifies *g_msgstream, internalState@*/ ;
131
132extern bool gentypeerror (/*@sef@*/ ctype p_t1,
133 /*@sef@*/ exprNode p_e1,
134 /*@sef@*/ ctype p_t2,
135 /*@sef@*/ exprNode p_e2,
136 /*@sef@*/ /*@only@*/ cstring p_s,
137 /*@sef@*/ fileloc p_loc)
138 /*@modifies *g_msgstream, internalState@*/ ;
139
140/*@-branchstate@*/ /* sef only s is freed on one branch */
141#define gentypeerror(t1, e1, t2, e2, s, loc) \
142 (context_suppressFlagMsg (FLG_TYPE,loc) \
143 ? (flagcode_recordSuppressed (FLG_TYPE), FALSE) \
144 : llgentypeerror (t1, e1, t2, e2, s, loc))
145/*@=branchstate@*/
146
147/*
148** These are macros to save evaluating s (which may be some expensive
149** message generation function).
150*/
151
152extern bool
153 optgenerror (/*@sef@*/ flagcode p_o, /*@sef@*/ /*@only@*/ cstring p_s,
154 /*@sef@*/ fileloc p_loc)
155 /*@modifies *g_msgstream, internalState@*/ ;
156
157/*@-branchstate@*/ /* sef only s is freed on one branch */
158#define optgenerror(o,s,loc) \
159 (context_suppressFlagMsg(o,loc) ? (flagcode_recordSuppressed(o), FALSE) \
160 : lloptgenerror (o, s, loc))
161/*@=branchstate@*/
162
163extern void
164 voptgenerror (/*@sef@*/ flagcode p_o, /*@sef@*/ /*@only@*/ cstring p_s,
165 /*@sef@*/ fileloc p_loc)
166 /*@modifies *g_msgstream, internalState@*/ ;
167#define voptgenerror(o, s, loc) ((void) optgenerror(o,s,loc))
168
169extern void
170 voptgenerror2 (/*@sef@*/ flagcode p_f1, /*@sef@*/ flagcode p_f2,
171 /*@sef@*/ /*@only@*/ cstring p_s, /*@sef@*/ fileloc p_loc);
172#define voptgenerror2(f1, f2, s, loc) ((void) optgenerror2 (f1, f2, s, loc))
173
174extern void
175 voptgenerror2n (/*@sef@*/ flagcode p_f1, /*@sef@*/ flagcode p_f2,
176 /*@sef@*/ /*@only@*/ cstring p_s, /*@sef@*/ fileloc p_loc);
177#define voptgenerror2n(f1, f2, s, loc) ((void) optgenerror2n (f1, f2, s, loc))
178
179extern void noptgenerror (/*@sef@*/ flagcode p_code,
180 /*@sef@*/ /*@only@*/ cstring p_s,
181 /*@sef@*/ fileloc p_loc);
182/*@-branchstate@*/ /* sef only s is freed on one branch */
183#define noptgenerror(o,s,loc) \
184 (context_suppressNotFlagMsg (o, loc) \
185 ? (flagcode_recordSuppressed(o), FALSE) \
186 : llnoptgenerror (o, s, loc))
187/*@=branchstate@*/
188
189extern void
190 vnoptgenerror (/*@sef@*/ flagcode p_code, /*@sef@*/ /*@only@*/ cstring p_msg,
191 /*@sef@*/ fileloc p_loc);
192# define vnoptgenerror(o, s, loc) ((void) noptgenerror(o, s, loc))
193
194extern void
195 vgenhinterror (flagcode p_code, /*@only@*/ cstring p_mst,
196 /*@only@*/ cstring p_hint, /*@sef@*/ fileloc p_loc);
197# define vgenhinterror(o, s, h, loc) \
198 ((void) llgenhinterror(o, s, h, loc))
199
200extern void llforceerror (flagcode p_code, /*@only@*/ cstring p_s, fileloc p_fl) /*@modifies g_msgstream@*/ ;
201
202extern void llerrorlit (flagcode p_o, char *p_s);
203extern void llgenindentmsg (/*@only@*/ cstring p_s, fileloc p_fl) /*@modifies g_msgstream@*/ ;
204
205extern /*@exits@*/ void llbugexitlit (char *p_s);
206extern void llbuglit (char *p_s);
207extern void llcontbuglit (char *p_s);
208
209# define llerror(o, s) ((void) llgenerror (o, s, g_currentloc))
210# define llerrorlit(o, s) ((void) llerror (o, cstring_makeLiteral (s)))
211# define llbuglit(s) (llbug (cstring_makeLiteral (s)))
212# define llcontbuglit(s) (llbug (cstring_makeLiteral (s)))
213# define llbugexitlit(s) (llbug (cstring_makeLiteral (s)))
214
215extern void checkParseError (void);
216
217extern void llmsglit (char *p_s);
218# define llmsglit(s) (llmsg (cstring_makeLiteral (s)))
219
220extern void ppllerror (/*@only@*/ cstring p_s);
221extern void genppllerrorhint (flagcode p_code, /*@only@*/ cstring p_s,
222 /*@only@*/ cstring p_hint);
223extern void genppllerror (flagcode p_code, /*@only@*/ cstring p_s);
224extern /*@unused@*/ void pplldiagmsg (/*@only@*/ cstring p_s);
225extern void loadllmsg (/*@only@*/ cstring p_s);
226
227extern void llgenindentmsgnoloc (/*@only@*/ cstring p_s);
228
229extern /*@observer@*/ cstring lldecodeerror (int) /*@*/ ;
230
231extern void prepareMessage (void) /*@modifies internalState, g_msgstream@*/ ;
232extern void closeMessage (void) /*@modifies internalState, g_msgstream@*/ ;
233
234extern void llflush (void) /*@modifies systemState@*/ ;
235
236# else
237# error "Multiple include"
238# endif
239
This page took 0.271186 seconds and 5 git commands to generate.