[fpc-pascal] Range check error warning.

Sven Barth pascaldragon at googlemail.com
Wed Mar 25 07:36:10 CET 2020


Am 24.03.2020 um 01:08 schrieb fredvs via fpc-pascal:
> Hello.
>
> With fpc 3.3.1 there is this warning:
>
> "Warning: (4110) Range check error while evaluating constants (-193 must be
> between 0 and 255)"
>
> Here the code pointed by the warning:
>
> const
>   foldhiddenbit = 7;
>   foldhiddenmask = 1 shl foldhiddenbit;
>   currentfoldhiddenbit = 6;
>   currentfoldhiddenmask = 1 shl currentfoldhiddenbit;
>   foldlevelmask = byte(not (foldhiddenmask or currentfoldhiddenmask));
> -------->Here the warning
>
> I dont understand how the compiler can find -193 as value for
> foldlevelmask...

Splitting the last constant a bit more allows to find the culprit:

=== code begin ===
const
   const1 = foldhiddenmask or currentfoldhiddenmask;
   const2 = not const1;
   const3 = byte(not const2);

=== code begin ===

The compiler will now complain on const3 (and a check with SizeOf(...) 
reveils that const2 is not of Byte size). I'll have to investigate 
however why the "not" behaves as it does.

Regards,
Sven


More information about the fpc-pascal mailing list