[fpc-pascal] FPC2.6 failed to raise compiler error "Argument can't be assigned to' for Generic class' Record property in "With" clause

Dennis Poon dennis at avidsoft.com.hk
Fri Dec 13 11:06:58 CET 2013


I think I found a bug in FPC 2.6.2.
In a method of a derived specialized class, the compiler does not raise 
error (which it should)
With "record property" do
    "record property's field" := NewValue   //it should raise error 
since it is a record property and should not be allowed to modify just 
one  field.

Please see below sample code for reproducing the error:

Dennis

--------------


Type

   RDevice=record
     Value : String;
     UpdatedAt : TDateTime;
   end;

   generic TGData <TData> =class(TComponent)
   private
     FData :  TData;
   public
     property Data : TData read FData;
   end;



   TDevice = class(specialize TGData<RDevice>)
   published
     procedure Test;
   end;

implementation

procedure TDevice.Test;
begin
   With Data do
     Value := ''; //no Compiler Error raised !!!
   Data.Value := ''; //Compiler raised "Error Argument can't be assigned to"

end;








More information about the fpc-pascal mailing list