[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