Pristine Ack-5.5
[Ack-5.5.git] / lang / fortran / comp / error.c
1 /****************************************************************
2 Copyright 1990 by AT&T Bell Laboratories and Bellcore.
3
4 Permission to use, copy, modify, and distribute this software
5 and its documentation for any purpose and without fee is hereby
6 granted, provided that the above copyright notice appear in all
7 copies and that both that the copyright notice and this
8 permission notice and warranty disclaimer appear in supporting
9 documentation, and that the names of AT&T Bell Laboratories or
10 Bellcore or any of their entities not be used in advertising or
11 publicity pertaining to distribution of the software without
12 specific, written prior permission.
13
14 AT&T and Bellcore disclaim all warranties with regard to this
15 software, including all implied warranties of merchantability
16 and fitness.  In no event shall AT&T or Bellcore be liable for
17 any special, indirect or consequential damages or any damages
18 whatsoever resulting from loss of use, data or profits, whether
19 in an action of contract, negligence or other tortious action,
20 arising out of or in connection with the use or performance of
21 this software.
22 ****************************************************************/
23
24 #include "defs.h"
25
26 warni(s,t)
27  char *s;
28  int t;
29 {
30         char buf[100];
31         sprintf(buf,s,t);
32         warn(buf);
33         }
34
35 warn1(s,t)
36 char *s, *t;
37 {
38         char buff[100];
39         sprintf(buff, s, t);
40         warn(buff);
41 }
42
43
44 warn(s)
45 char *s;
46 {
47         if(nowarnflag)
48                 return;
49         if (infname && *infname)
50                 fprintf(diagfile, "Warning on line %ld of %s: %s\n",
51                         lineno, infname, s);
52         else
53                 fprintf(diagfile, "Warning on line %ld: %s\n", lineno, s);
54         fflush(diagfile);
55         ++nwarn;
56 }
57
58
59 errstr(s, t)
60 char *s, *t;
61 {
62         char buff[100];
63         sprintf(buff, s, t);
64         err(buff);
65 }
66
67
68
69 erri(s,t)
70 char *s;
71 int t;
72 {
73         char buff[100];
74         sprintf(buff, s, t);
75         err(buff);
76 }
77
78 errl(s,t)
79 char *s;
80 long t;
81 {
82         char buff[100];
83         sprintf(buff, s, t);
84         err(buff);
85 }
86
87  char *err_proc = 0;
88
89 err(s)
90 char *s;
91 {
92         if (err_proc)
93                 fprintf(diagfile,
94                         "Error processing %s before line %ld",
95                         err_proc, lineno);
96         else
97                 fprintf(diagfile, "Error on line %ld", lineno);
98         if (infname && *infname)
99                 fprintf(diagfile, " of %s", infname);
100         fprintf(diagfile, ": %s\n", s);
101         fflush(diagfile);
102         ++nerr;
103 }
104
105
106 yyerror(s)
107 char *s;
108 {
109         err(s);
110 }
111
112
113
114 dclerr(s, v)
115 char *s;
116 Namep v;
117 {
118         char buff[100];
119
120         if(v)
121         {
122                 sprintf(buff, "Declaration error for %s: %s", v->fvarname, s);
123                 err(buff);
124         }
125         else
126                 errstr("Declaration error %s", s);
127 }
128
129
130
131 execerr(s, n)
132 char *s, *n;
133 {
134         char buf1[100], buf2[100];
135
136         sprintf(buf1, "Execution error %s", s);
137         sprintf(buf2, buf1, n);
138         err(buf2);
139 }
140
141
142 Fatal(t)
143 char *t;
144 {
145         fprintf(diagfile, "Compiler error line %ld", lineno);
146         if (infname)
147                 fprintf(diagfile, " of %s", infname);
148         fprintf(diagfile, ": %s\n", t);
149         done(3);
150 }
151
152
153
154
155 fatalstr(t,s)
156 char *t, *s;
157 {
158         char buff[100];
159         sprintf(buff, t, s);
160         Fatal(buff);
161 }
162
163
164
165 fatali(t,d)
166 char *t;
167 int d;
168 {
169         char buff[100];
170         sprintf(buff, t, d);
171         Fatal(buff);
172 }
173
174
175
176 badthing(thing, r, t)
177 char *thing, *r;
178 int t;
179 {
180         char buff[50];
181         sprintf(buff, "Impossible %s %d in routine %s", thing, t, r);
182         Fatal(buff);
183 }
184
185
186
187 badop(r, t)
188 char *r;
189 int t;
190 {
191         badthing("opcode", r, t);
192 }
193
194
195
196 badtag(r, t)
197 char *r;
198 int t;
199 {
200         badthing("tag", r, t);
201 }
202
203
204
205
206
207 badstg(r, t)
208 char *r;
209 int t;
210 {
211         badthing("storage class", r, t);
212 }
213
214
215
216
217 badtype(r, t)
218 char *r;
219 int t;
220 {
221         badthing("type", r, t);
222 }
223
224
225 many(s, c, n)
226 char *s, c;
227 int n;
228 {
229         char buff[250];
230
231         sprintf(buff,
232             "Too many %s.\nTable limit now %d.\nTry recompiling using the -N%c%d option\n",
233             s, n, c, 2*n);
234         Fatal(buff);
235 }
236
237
238 err66(s)
239 char *s;
240 {
241         errstr("Fortran 77 feature used: %s", s);
242         --nerr;
243 }
244
245
246
247 errext(s)
248 char *s;
249 {
250         errstr("F77 compiler extension used: %s", s);
251         --nerr;
252 }