Never mind, it's in the lines before. Seems like fpc doesn't allow
dereferencing a variable of a generic type in any way. The expression p^
will generate the error.

Sorry I made the wrong example. The problem isn't in the dereferencing of the pointer,
but in accessing record fields. Here is simpler example:
==============================================
program genbug;

{$MODE OBJFPC}

uses
 Classes, SysUtils;

type
 TRec32 = packed record
   data1 : longword;
   data2 : longword;
 end;

 TRec64 = packed record
   data1 : qword;
   data2 : qword;
 end;

 generic TGenClass<_TRec_> = class
 public
   constructor Create;
 end;

 TClass32 = specialize TGenClass<TRec32>;
 TClass64 = specialize TGenClass<TRec64>;

 constructor TGenClass.Create;
 var rec : _TRec_;
 begin
   rec.data1:=1;
   rec.data2:=2;
 end;


begin

end.
==============================================

FPC complains in
   rec.data1:=1;
   rec.data2:=2;
because rec isn't fully defined, so it finds no field data1 or data2 in rec.
However, I think it should complain only if I try to specialize TGenClass with
a type that doesn't have data1 and data2 fields/members/properties.

So I am wondering if this is the correct behaviour, or if it is a bug, or if it
is something that is not implemented now but will be in the future.

bye,
Giulio
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to