REJECTED 2026-08-26 — never, and we are the ones who are right. The ticket's own analysis settles it:
not Byte(0)= 255 is Delphi's answer and FPC is the outlier, folding in its Int64 constant domain. "Fixing" this would move pxx away from Delphi to reproduce an FPC constant-folding artifact. We do not chase 100% FPC parity (CLAUDE.md), and least of all when parity costs correctness against the other reference implementation.
not Byte(0) is 255 here and -1 in FPC
- Track P (Pascal frontend: constant folding of
not), tag compat-pascal. - Found 2026-08-20 by an FPC differential probe.
What differs
Writeln(not Byte(0)); { pxx 255 FPC -1 }
Writeln(not LongWord(0)); { pxx 4294967295 FPC -1 }
With a variable the two agree — b: Byte = 0; Writeln(not b) is 255 in both,
not c for a LongWord is 4294967295 in both. Only the folded constant form
diverges: FPC evaluates a constant not in its Int64 constant domain and the
cast's width does not survive.
Which one is right
Delphi's answer is 255: not on a Byte yields a Byte. pxx agrees with Delphi,
FPC does not. So this is recorded rather than "fixed" — changing it would move
us away from Delphi to match an FPC constant-folding artifact.
Where it could bite
const MASK = not Byte(0); then x and MASK — 255 versus -1 masks a different
number of bits. That is the one shape worth grepping for if a real FPC program
ever disagrees with pxx on a mask.