996
|
1 /* ick_lose.h --- error message strings */
|
|
2
|
|
3 /*
|
|
4 * Note: these error message texts, with one exception, are direct from
|
|
5 * the Princeton compiler (INTERCAL-72) sources (transmitted by Don Woods).
|
|
6 * The one exception is IE632, which in INTERCAL-72 had the error message
|
|
7 * PROGRAM ATTEMPTED TO EXIT WITHOUT ERROR MESSAGE
|
|
8 * ESR's "THE NEXT STACK HAS RUPTURED!..." has been retained on the grounds
|
|
9 * that it is more obscure and much funnier. For context, find a copy of
|
|
10 * Joe Haldeman's SF short story "A !Tangled Web", ick_first published in
|
|
11 * Analog magazine in September 1981 and later anthologized in the author's
|
|
12 * "Infinite Dreams" (Ace 1985).
|
|
13 */
|
|
14 /* An undecodable statement has been encountered in the course of execution. */
|
|
15 #define IE000 "000 %s\n\
|
|
16 ON THE WAY TO %d\n"
|
|
17 /* An expression contains a syntax error. */
|
|
18 #define IE017 "017 DO YOU EXPECT ME TO FIGURE THIS OUT?\n\
|
|
19 ON THE WAY TO %d\n"
|
|
20 /* Improper use has been made of statement identifiers. */
|
|
21 #define IE079 "079 PROGRAMMER IS INSUFFICIENTLY POLITE\n\
|
|
22 ON THE WAY TO %d\n"
|
|
23 /* Improper use has been made of statement identifiers. */
|
|
24 #define IE099 "099 PROGRAMMER IS OVERLY POLITE\n\
|
|
25 ON THE WAY TO %d\n"
|
|
26 /* Program has attempted 80 levels of NEXTing */
|
|
27 #define IE123 "123 PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON\n\
|
|
28 ON THE WAY TO %d\n"
|
|
29 /* Program has attempted to transfer to a non-existent line label */
|
|
30 #define IE129 "129 PROGRAM HAS GOTTEN LOST\n\
|
|
31 ON THE WAY TO WHO KNOWS WHERE\n"
|
|
32 /* An ABSTAIN or REINSTATE statement references a non-existent line label */
|
|
33 #define IE139 "139 I WASN'T PLANNING TO GO THERE ANYWAY\n\
|
|
34 ON THE WAY TO %d\n"
|
|
35 /* A line label has been multiply defined. */
|
|
36 #define IE182 "182 YOU MUST LIKE THIS LABEL A LOT!\n\
|
|
37 ON THE WAY TO %d\n"
|
|
38 /* An invalid line label has been encountered. */
|
|
39 #define IE197 "197 SO! 65535 LABELS AREN'T ENOUGH FOR YOU?\n\
|
|
40 ON THE WAY TO %d\n"
|
|
41 /* An expression involves an unidentified variable. */
|
|
42 #define IE200 "200 NOTHING VENTURED, NOTHING GAINED\n\
|
|
43 ON THE WAY TO %d\n"
|
|
44 /* An attempt has been made to give an array a dimension of zero. */
|
|
45 #define IE240 "240 ERROR HANDLER PRINTED SNIDE REMARK\n\
|
|
46 ON THE WAY TO %d\n"
|
|
47 /* Invalid dimensioning information was supplied
|
|
48 * in defining or using an array. */
|
|
49 #define IE241 "241 VARIABLES MAY NOT BE STORED IN WEST HYPERSPACE\n\
|
|
50 ON THE WAY TO %d\n"
|
|
51 /* A 32-bit value has been assigned to a 16-bit variable. */
|
|
52 #define IE275 "275 DON'T BYTE OFF MORE THAN YOU CAN CHEW\n\
|
|
53 ON THE WAY TO %d\n"
|
|
54 /* A retrieval has been attempted for an unSTASHed value. */
|
|
55 #define IE436 "436 THROW STICK BEFORE RETRIEVING!\n\
|
|
56 ON THE WAY TO %d\n"
|
|
57 /* A WRITE IN statement or interleave ($) operation
|
|
58 * has produced value requiring over 32 bits to represent. */
|
|
59 #define IE533 "533 YOU WANT MAYBE WE SHOULD IMPLEMENT 64-BIT VARIABLES?\n\
|
|
60 ON THE WAY TO %d\n"
|
|
61 /* Insufficient data. (raised by reading past EOF) */
|
|
62 #define IE562 "562 I DO NOT COMPUTE\n\
|
|
63 ON THE WAY TO %d\n"
|
|
64 /* Input data is invalid. */
|
|
65 #define IE579 "579 WHAT BASE AND/OR LANGUAGE INCLUDES %s?\n\
|
|
66 ON THE WAY TO %d\n"
|
|
67 /* The expression of a RESUME statement evaluated to #0. */
|
|
68 #define IE621 "621 ERROR TYPE 621 ENCOUNTERED\n\
|
|
69 ON THE WAY TO %d\n"
|
|
70 /* Program execution terminated via a RESUME statement instead of GIVE UP. */
|
|
71 #define IE632 "632 THE NEXT STACK RUPTURES. ALL DIE. OH, THE EMBARRASSMENT!\n\
|
|
72 ON THE WAY TO %d\n"
|
|
73 /* Execution has passed beyond the last statement of the program. */
|
|
74 #define IE633 "633 PROGRAM FELL OFF THE EDGE\n\
|
|
75 ON THE WAY TO THE NEW WORLD\n"
|
|
76 /* A compiler error has occurred (see section 8.1). */
|
|
77 #define IE774 "774 RANDOM COMPILER BUG\n\
|
|
78 ON THE WAY TO %d\n"
|
|
79 /* An unexplainable compiler error has occurred (see J. Lyon or D. Woods). */
|
|
80 #define IE778 "778 UNEXPLAINED COMPILER BUG\n\
|
|
81 ON THE WAY TO %d\n"
|
|
82
|
|
83 /*
|
|
84 * These errors are unique to C-INTERCAL.
|
|
85 */
|
|
86 /* You tried to use a C-INTERCAL extension with the `ick_traditional' flag on */
|
|
87 #define IE111 "111 COMMUNIST PLOT DETECTED, COMPILER IS SUICIDING\n\
|
|
88 ON THE WAY TO %d\n"
|
|
89 /* Cannot find the magically included system library */
|
|
90 #define IE127 "127 SAYING 'ABRACADABRA' WITHOUT A MAGIC WAND WON'T DO YOU ANY GOOD\n\
|
|
91 ON THE WAY TO THE CLOSET\n"
|
|
92 /* Out of stash space */
|
|
93 #define IE222 "222 BUMMER, DUDE!\n\
|
|
94 ON THE WAY TO %d\n"
|
|
95 /* (AIS) Out of memory during I/O */
|
|
96 #define IE252 "252 I'VE FORGOTTEN WHAT I WAS ABOUT TO SAY\n\
|
|
97 ON THE WAY TO %d\n"
|
|
98 /* (AIS) Can't reverse an expression in an assignment. This is the
|
|
99 same error number as in CLC-INTERCAL, but the message is different. */
|
|
100 #define IE277 "277 YOU CAN ONLY DISTORT THE LAWS OF MATHEMATICS SO FAR\n\
|
|
101 ON THE WAY TO %d\n"
|
|
102 /* (AIS) The spark/ears nesting is too deep. */
|
|
103 #define IE281 "281 THAT MUCH QUOTATION AMOUNTS TO PLAGIARISM\n\
|
|
104 ON THE WAY TO %d\n"
|
|
105 /* Too many variables. */
|
|
106 #define IE333 "333 YOU CAN'T HAVE EVERYTHING, WHERE WOULD YOU PUT IT?\n\
|
|
107 ON THE WAY TO %d\n"
|
|
108 /* Out of memory during compilation. */
|
|
109 #define IE345 "345 THAT'S TOO COMPLEX FOR ME TO GRASP\n\
|
|
110 ON THE WAY TO SOMEWHERE\n"
|
|
111 /* (AIS, from the suggestion by Malcom Ryan)
|
|
112 GO BACK or GO AHEAD was executed without a choicepoint. */
|
|
113 #define IE404 "404 I'M ALL OUT OF CHOICES!\n\
|
|
114 ON THE WAY TO %d\n"
|
|
115 /* (AIS) WHILE, MAYBE, GO BACK, or GO AHEAD used without the -m option. */
|
|
116 #define IE405 "405 PROGRAM REJECTED FOR MENTAL HEALTH REASONS\n\
|
|
117 ON THE WAY TO %d\n"
|
|
118 /* A COME FROM statement references a non-existent line label. */
|
|
119 #define IE444 "444 IT CAME FROM BEYOND SPACE\n\
|
|
120 ON THE WAY TO %d\n"
|
|
121 /* (AIS) We just buffer-overflowed. (Detecting this /before/ the overflow
|
|
122 happens is probably more secure, but harder and less fun. As long as we
|
|
123 don't return from any functions, it's probably safe in theory, but don't
|
|
124 rely on this. */
|
|
125 #define IE553 "553 BETTER LATE THAN NEVER\n\
|
|
126 ON THE WAY TO %d\n"
|
|
127 /* More than one COME FROM references the same label. */
|
|
128 #define IE555 "555 FLOW DIAGRAM IS EXCESSIVELY CONNECTED\n\
|
|
129 ON THE WAY TO %d\n"
|
|
130 /* Too many source lines, or too many input files, or source line is
|
|
131 too long. */
|
|
132 #define IE666 "666 COMPILER HAS INDIGESTION\n\
|
|
133 ON THE WAY TO %d\n"
|
|
134 /* No such source file. */
|
|
135 #define IE777 "777 A SOURCE IS A SOURCE, OF COURSE, OF COURSE\n\
|
|
136 ON THE WAY TO %d\n"
|
|
137 /* Can't open C output file */
|
|
138 #define IE888 "888 I HAVE NO FILE AND I MUST SCREAM\n\
|
|
139 ON THE WAY TO %d\n"
|
|
140 /* Can't open C skeleton file. */
|
|
141 #define IE999 "999 NO SKELETON IN MY CLOSET, WOE IS ME!\n\
|
|
142 ON THE WAY TO %d\n"
|
|
143 /* Source file name with invalid extension (use .i or .[3-7]i). */
|
|
144 #define IE998 "998 EXCUSE ME,\n\
|
|
145 YOU MUST HAVE ME CONFUSED WITH SOME OTHER COMPILER\n"
|
|
146 /* (AIS) File used of a type for which the required libraries aren't
|
|
147 available. */
|
|
148 #define IE899 "899 HELLO?\n\
|
|
149 CAN ANYONE GIVE ME A HAND HERE?\n"
|
|
150 /* Illegal possession of a controlled unary operator. */
|
|
151 #define IE997 "997 ILLEGAL POSSESSION OF A CONTROLLED UNARY OPERATOR.\n\
|
|
152 ON THE WAY TO %d\n"
|
|
153 /* (AIS) Command found after TRY AGAIN. */
|
|
154 #define IE993 "993 I GAVE UP LONG AGO\n\
|
|
155 ON THE WAY TO %d\n"
|
|
156 /* (AIS) Memory allocation failure during multithreading */
|
|
157 #define IE991 "991 YOU HAVE TOO MUCH ROPE TO HANG YOURSELF\n\
|
|
158 ON THE WAY TO %d\n"
|
|
159 /* (AIS) Unimplemented feature used. This should never come up, hopefully. */
|
|
160 #define IE995 "995 DO YOU REALLY EXPECT ME TO HAVE IMPLEMENTED THAT?\n\
|
|
161 ON THE WAY TO %d\n"
|
|
162 /*
|
|
163 * AIS: These errors are specific to PIC-INTERCAL
|
|
164 */
|
|
165 /* (AIS) Attempted to use an unsupported language feature. */
|
|
166 #define IE256 "256 THAT'S TOO HARD FOR MY TINY BRAIN\n\
|
|
167 ON THE WAY TO %d\n"
|
|
168
|
|
169 /* (AIS) Attempted to use a PIC feature in a non-PIC program. */
|
|
170 #define IE652 "652 HOW DARE YOU INSULT ME!\n\
|
|
171 ON THE WAY TO %d\n"
|
|
172
|
|
173 /*
|
|
174 * AIS: These errors are generated by the yuk debugger
|
|
175 */
|
|
176 /* (AIS) fgets' buffer overflowed on debugger comand input. */
|
|
177 #define IE810 "810 ARE ONE-CHARACTER COMMANDS TOO SHORT FOR YOU?\n\
|
|
178 ON THE WAY TO %d\n"
|
|
179
|
|
180 /* (AIS) Too many breakpoints. */
|
|
181 #define IE811 "811 PROGRAM IS TOO BADLY BROKEN TO RUN\n\
|
|
182 ON THE WAY TO %d\n"
|
|
183
|
|
184 /*
|
|
185 * (AIS) Warnings produced by -l.
|
|
186 */
|
|
187
|
|
188 /* (AIS) Non-INTERCAL-72 identifier used. */
|
|
189 #define W112 "112 THAT RELIES ON THE NEW WORLD ORDER\n\
|
|
190 ON THE WAY TO %d\n"
|
|
191
|
|
192 /* (AIS) That stupid idiom in syslib was used. */
|
|
193 #define W128 "128 SYSLIB IS OPTIMIZED FOR OBFUSCATION\n\
|
|
194 ON THE WAY TO %d\n"
|
|
195
|
|
196 /* (AIS) Possibly nonportable unary operator. */
|
|
197 #define W534 "534 KEEP LOOKING AT THE TOP BIT\n\
|
|
198 ON THE WAY TO %d\n"
|
|
199
|
|
200 /* (AIS) Expression still contains INTERCAL operators after
|
|
201 optimization. Only in binary, because this nearly always
|
|
202 happens in the higher bases. Syslib causes quite a lot of
|
|
203 these. This warning is fine on INTERCAL-like lines, but
|
|
204 flags a mistake on lines that are meant to be translations
|
|
205 of C. */
|
|
206 #define W018 "018 THAT WAS MEANT TO BE A JOKE\n\
|
|
207 ON THE WAY TO %d\n"
|
|
208
|
|
209 /* (AIS) Possible misplaced unary operator. At the moment, ick -l cannot
|
|
210 detect this condition (so it never comes up). It's meant to detect
|
|
211 expressions like '?"?.1~#256"$#2'~#3 (from numio.i); in this expression,
|
|
212 the second what has no effect (it changes only the msb of the immediately
|
|
213 surrounding expression, which is eventually filtered out by the select
|
|
214 against #3). But detecting this would probably require code that could
|
|
215 check which bits of a result were going to be used elsewhere in an
|
|
216 expression, which is something I haven't written yet (but would make
|
|
217 a decent optimize_pass3). */
|
|
218 #define W016 "016 DON'T TYPE THAT SO HASTILY\n\
|
|
219 ON THE WAY TO %d\n"
|
|
220
|
|
221 /* (AIS) Possibly overflowing assignment or ick_mingle. Syslib causes some of
|
|
222 these too, in complicated situations where the bugcatcher can't figure
|
|
223 out what's happening, and also in a few blatant statements in the mould
|
|
224 of DO .3 <- :3, which are quite clearly possible overflows. Strangely
|
|
225 enough, there's a commented-out section of code in feh.c that suggests
|
|
226 that someone tried to make this an error (using a more general check
|
|
227 which would have caught more correct code involving GETS, but none
|
|
228 involving $). As a middle ground, I've made it an -l warning. */
|
|
229 #define W276 "276 YOU CAN'T EXPECT ME TO CHECK BACK THAT FAR\n\
|
|
230 ON THE WAY TO %d\n"
|
|
231
|
|
232 /* (AIS) A line will inevitably cause an expression-reversal failure. */
|
|
233 #define W278 "278 FROM A CONTRADICTION, ANYTHING FOLLOWS\n\
|
|
234 ON THE WAY TO A HUGE DISASTER\n"
|
|
235
|
|
236 /* (AIS) The two following warnings are both compile-time traps for
|
|
237 near-certain runtime errors. As such, they have similar numbers
|
|
238 and similar messages. In fact, they're a shameless ripoff of the
|
|
239 originals, but should serve as a reminder for anyone aware of the
|
|
240 original messages. */
|
|
241 /* (AIS) Dimension given for an ick_array will come out as #0. */
|
|
242 #define W239 "239 WARNING HANDLER PRINTED SNIDE REMARK\n\
|
|
243 ON THE WAY TO %d\n"
|
|
244
|
|
245 /* (AIS) RESUME argument will come out as #0. */
|
|
246 #define W622 "622 WARNING TYPE 622 ENCOUNTERED\n\
|
|
247 ON THE WAY TO %d\n"
|
|
248
|
|
249 extern int ick_lineno;
|
|
250
|
|
251 extern void /*@noreturn@*/ ick_lose(const char *m, int n, /*@null@*/ const char *s)
|
|
252 #ifdef __GNUC__
|
|
253 __attribute__ ((noreturn))
|
|
254 #endif
|
|
255 ;
|
|
256
|
|
257 extern void ick_lwarn(const char *m, int n, /*@null@*/ const char *s);
|
|
258
|
|
259 /* ick_lose.h ends here */
|