A More Serious GPC Bug
Mon, 11 Aug 1997 15:08:53 -0400 (EDT)
Here's a more serious problem I've found while attempting
to port a "legacy" application (250,000 LOC) to GNU Pascal:
FILE: test1.pas
UNIT Test1;
INTERFACE
TYPE
eFlagDefs = (IDEInterface,DoubleDensity,HighDensity);
sFlagDefs = SET OF eFlagDefs;
FUNCTION GetFlagVal : eFlagDefs;
IMPLEMENTATION
END.
FILE: test.pas
PROGRAM Test;
USES
Test1;
VAR
Flags : sFlagDefs;
BEGIN
Flags := [IDEInterface,HighDensity];
IF IDEInterface IN Flags THEN
WRITELN ('IDE Interface');
IF GetFlagVal IN [HighDensity,DoubleDensity] THEN
WRITELN ('Dump Core');
END.
test.pas: In function `program_Test':
test.pas:9: type of set constructor element must be the set
basetype
test.pas:9: type of set constructor element must be the set
basetype
test.pas:9: aggregate value used where an integer was expected
test.pas:10: invalid operands to binary `in'
test.pas:10: condition must be of Boolean type
gpc: Internal compiler error: program gpc1 got fatal signal 11
Problem seems to be related to performing operations on "set
elements" when defined in an external UNIT. Note that the
same functions appear to work when all defined in one unit.
Phil
-------------------------------------------------------------------------
Philip A. Robertson Gilbarco Inc. F-78
Phone (910) 547-5164 7300 W. Friendly Ave
Fax (910) 292-8871 Greensboro, NC 27410
-------------------------------------------------------------------------
Phil Robertson (phil_robertson@gilbarco.com)
HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada -
Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es