Range analysis result printing?
bearophile
bearophileHUGS at lycos.com
Sun Jun 23 07:20:51 PDT 2013
I am thinking about opening an enhancement request, but this time
I first prefer to ask your opinion here.
For this code:
void main() {
ubyte x;
ubyte y = x << 1;
}
The range analysis determines that it's conceivable to the result
of that expression to not fit in y, so the D compiler 2.064alpha
gives:
temp.d(3): Error: cannot implicitly convert expression
(cast(int)x << 1) of type int to ubyte
To help the programmer understand faster the mistake in his/her
code when expressions become more complex I think it's also
useful to print the range resulting from the analysis, like:
temp.d(3): Error: cannot implicitly convert expression
(cast(int)x << 1) in interval [0 ... 510] of type int to ubyte
It uses 3 dots because it's an interval that includes the right
end. Otherwise if you print an interval open on the right in a
case like this you have to print a ulong.max+1 value:
void main() {
ulong x;
int y = x;
}
Do you like?
Bye,
bearophile
More information about the Digitalmars-d-learn
mailing list