[lazarus] fpc 1.1 works again
Peter Vreman
peter at freepascal.org
Wed Aug 1 02:15:59 EDT 2001
> >Even if we stay with 1.0.5 you will need to make a new RPM of the
> >compiler for on the site since the makefiles will assume that the new
> >compiler is being used.
>
> Nope, the last one I made was made with these changes in mind (that time I
> thought I would have finished the makefiles soon)
You should build a new RPM, because i fixed a bug in the compiler that allowed the use
hidden private fields using the with construct. And the correct field from the current
class would then not be used. Below are the test files to show the problem.
At least timagelist is affected by this wrong codegeneration.
Peter
{$ifdef fpc}{$mode objfpc}{$endif}
unit ub0366;
interface
type
tc1=class
private
FHeight : integer;
public
constructor Create;
property Height : integer read FHeight write FHeight;
end;
implementation
constructor tc1.Create;
begin
FHeight:=0;
end;
end.
{$ifdef fpc}{$mode objfpc}{$endif}
uses
ub0366;
type
tc2=class
public
FHeight : integer;
procedure p1;
end;
procedure tc2.p1;
var
c1 : tc1;
begin
FHeight:=10;
c1:=tc1.create;
with c1 do
begin
Height:=FHeight;
end;
writeln('c1.Height: ',c1.Height,' (should be 10)');
if c1.Height<>10 then
begin
writeln('ERROR!');
halt(1);
end;
c1.free;
end;
var
c2 : tc2;
begin
c2:=tc2.create;
c2.p1;
c2.free;
end.
More information about the Lazarus
mailing list