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.
Best regards,
Adam Naumowicz
======================================================================
Department of Applied Logic fax. +48 (85) 745-7662
Institute of Computer Science tel. +48 (85) 745-7559 (office)
University of Bialystok e-mail: [EMAIL PROTECTED]
Sosnowa 64, 15-887 Bialystok, Poland http://math.uwb.edu.pl/~adamn/
======================================================================
program tester;
type TXMLElemKind = (
elErrorFrm,
elInvolutiveness,
elIrreflexivity,
elIs,
elIt,
elIterEquality,
elIterStep,
elJustifiedProperty,
elJustifiedTheorem,
elLambdaVar,
elLet,
elLocusVar,
elMonomial,
elNot,
elPoweredVar,
elPred,
elPredInstance,
elPriority,
elPrivFunc,
elPrivPred,
elProjectivity,
elProof,
elTakeAsVar,
elTheorem,
elTheorems,
elThesis,
elThesisExpansions,
elTransitivity,
elTyp,
elUnexpectedProp,
elUniqueness,
elUnknownCorrCond,
elVar,
elVerum
);
const TermElKinds = [
elVar
];
const FrmElKinds = [
elErrorFrm,
elIs,
elNot,
elPred,
elPrivPred,
elVerum
];
var a:TXMLElemKind;
begin
a:=elVerum;
writeln( a in (FrmElKinds + TermElKinds));
end.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal