Adam Naumowicz wrote:
Hello again,

On Mon, 11 Feb 2008, Adam Naumowicz wrote:

Hello,

I'd like to know if this is a known issue, or a new bug.

With the following code:
------------------
program tester;

type SomeType = ( SomeElem );

const ElemSet = [ SomeElem ];

begin
  writeln(SomeElem in ElemSet);
  writeln(SomeElem in (ElemSet + []));
end.
------------------

one gets:

TRUE
FALSE

while it should rather be

TRUE
TRUE

The problem concerns FPC 2.2.0 on i386/Linux. Actually, I was tracing a bug that was only visible with 2.2.0 while the 2.0.0 version of the compiler did not produce an errorneous code on that. Unfortunately, I didn't succeed to separate a small snippet of code responsible for that - in that case, however, the set after the '+' was another set constant, not an empty set, so the problem is rather general. As I said, with 2.0.0 the boolean value was correct, while with 2.2.0 it was plain wrong.

It seems I've found an example that produces 'FALSE' with 2.2.0 and 'TRUE' with 2.0.0 trying to eliminate my code as much as possible - the piece is still a bit longish, so I attach it as a separate file - it seems, however, that removing lines any further 'hides' the bug.

I hope it will help you find the solution for this nasty problem.

Fixed in 2.3.1 in r10311.


_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to