But a boolean32 is only true if set to the ordinal value 1. Any value other than 0 or 1 will set it to undefined.
That really begs the question: why does the compiler allow it to be set to an "undefined" value when it has all the necessary information to prevent it ?
The compiler doesn't even emit a hint or a warning to draw the programmer's attention to the incorrect/invalid/"undefined territory" (choose whichever adjective is more palatable) situation. Emitting a hint or warning should be acceptable... no ? (or do we want to hide the fact that booleans can be set to values other than 0 and 1 under the binary rug ?)
Basically, if the programmer creates a statement the compiler should reject, it's not a flaw that the compiler didn't reject the incorrect statement, the real problem is: the programmer should not have found that flaw.. much less use it in spite of the fact that the compiler pretends it is perfectly acceptable.
Anyway, what's really sad is that because Delphi has the same "deficiency", FPC will use that as the reason to keep it that way.
However, on a related note, shouldn't the documentation be updated to inform the programmer of the fact that booleans may be set to values other than TRUE and FALSE but those are the only values that will produce correct results. That's the reality, the documentation should "probably" reflect that.