Previous: , Up: Errors and Warnings   [Index]


3.2 Warnings

This is a list of the warnings stored in the warning database. Warnings only come up when the -l option (see -l) is given; even then, some of the warnings are not currently implemented and therefore will never come up.

W016

DON’T TYPE THAT SO HASTILY

The positional precedence rules for unary operators are somewhat complicated, and it’s easy to make a mistake. This warning is meant to detect such mistakes, but is not currently implemented.

W018

THAT WAS MEANT TO BE A JOKE

If an INTERCAL expression has been translated from another language such as C, the optimiser is generally capable of translating it back into something similar to the original, at least in base 2. When after optimisation there are still INTERCAL operators left in an expression, then this warning is produced. (Therefore, it’s likely to come up quite a lot if optimisation isn’t used!) The system library produces some of these warnings (you can tell if a warning has come up in the system library because you’ll get a line number after the end of your program).

W112

THAT RELIES ON THE NEW WORLD ORDER

This warning comes up whenever the compiler recognises that you’ve added some code that didn’t exist in INTERCAL-72. This allows you to check whether your code is valid INTERCAL-72 (although -t (see -t) is more useful for that); it also warns you that code might not be portable (because INTERCAL-72 is implemented by most INTERCAL compilers, but more recent language features may not be).

W128

SYSLIB IS OPTIMIZED FOR OBUSCATION

There is an idiom used in the system library that does a right-shift by selecting alternate bits from a twospot number and then mingling them the other way round. A rightshift can much more easily be done with a single rightshift, so this is a silly way to do it, and this warning warns that this idiom was used. However, the present optimizer is incapable of recognising whether this problem exists or not, so the warning is not currently implemented.

W276

YOU CAN’T EXPECT ME TO CHECK BACK THAT FAR

It’s an error to assign a twospot value (a value over 65535) to a onespot variable, or to use it as an argument to a mingle. If the optimizer can’t guarantee at compile time that there won’t be an overflow, it issues this warning. (Note that this doesn’t necessarily mean there’s a problem — for instance, the system library generates some of these warnings — only that the optimiser couldn’t work out for sure that there wasn’t a problem.)

W239

WARNING HANDLER PRINTED SNIDE REMARK

Your code looks like it’s trying to assign 0 to an array, giving it no dimension; this is an error. This warning is produced at compile time if it looks like a line in your code will cause this error, but it isn’t necessarily an error because that line of code might never be executed.

W278

FROM A CONTRADICTION, ANYTHING FOLLOWS

It’s sometimes impossible to reverse an assignment (a reverse assignment can happen if the -v option (see -v) is used and an expression is placed on the left of an assignment, or in operand overloading); if the compiler detects that a reversal failure is inevitable, it will cause this warning. Note that this doesn’t always cause an error, because the relevant code might never be executed.

W450

THE DOCUMENTOR IS NOT ALWAYS RIGHT

There is no way to get this warning to come up; it isn’t even written anywhere in C-INTERCAL’s source code, is not implemented by anything, and there are no circumstances in which it is even meant to come up. It is therefore not at all obvious why it is documented.

W534

KEEP LOOKING AT THE TOP BIT

C-INTERCAL uses a slightly different typing mechanism to some other INTERCAL compilers; types are calculated at compile time rather than run time. This only makes a difference in some cases involving unary operators. It’s impossible to detect at compile time for certain whether such a case has come up or not, but if the compiler or optimizer thinks that such a case might have come up, it will issue this warning.

W622

WARNING TYPE 622 ENCOUNTERED

Your code looks like it’s trying to resume by 0; this is an error. This warning is produced at compile time if it looks like a line in your code will cause this error, but it isn’t necessarily an error because that line of code might never be executed.


Previous: , Up: Errors and Warnings   [Index]