Hi all, this looks like a bug: non-negative integer constants are treated as LongestCard, i.e. an unsigned type. [pas]% gpc -v Reading specs from /usr/local/lib/gcc-lib/i586-pc-linux-gnu/2.95.2/specs gpc version 20020402, based on 2.95.2 19991024 (release) [pas]% cat sign.pas program Foo (Output); const Two = 2; begin if (0 < Two - 23) or (3 < 13 - 42) then WriteLn ('failed: ', Two - 23, ', ', 13 - 42) else WriteLn ('OK') end. [pas]% gpc sign.pas [pas]% ./a.out failed: 18446744073709551595, 18446744073709551587 And an unrelated one: a schema discriminant is not initialized in the situation below. [pas]% cat schema.pas program Foo (Output); type A (N: Integer) = Integer; B (N: Integer) = array [1 .. N] of A (N); var C : B (7); begin if (C.N = 7) and (C[3].N = 7) then WriteLn ('OK') else WriteLn ('failed: ', C.N, ' ', C[3].N) end. [pas]% gpc schema.pas [pas]% ./a.out failed: 7 0 Emil Jerabek
participants (2)
-
Emil Jerabek -
Frank Heckenbach