Hi,
I have a problem with generics (see code at the end of the mail).
I'm trying to use a record as the type of a generic class, but
the code doesn't compile because fpc complains with:
"Error: Illegal qualifier"
on lines where I use the record fields.
I think that the compiler should raise this error only if the
class is specialized with an incompatible type.
code:

===========================================================

program genbug;

{$MODE OBJFPC}

uses
 Classes, SysUtils;

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

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

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

 TClass32 = specialize TGenClass<PRec32,TRec32>;
 TClass64 = specialize TGenClass<PRec64,TRec64>;

 constructor TGenClass.Create;
 var p : _TPRec_;
 begin
   GetMem(p,sizeof(_TRec_));
   p^.data1:=1;
   p^.data2:=2;
   FreeMem(p);
 end;


begin

end.

===========================================================

FPC raises an error on these lines:
   p^.data1:=1;
   p^.data2:=2;
Tried with 2.2.0 and 2.3.1 (svn revision 8423).

Is this a bug (should I report this to mantis?) or a feature?

bye,
Giulio

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! http://search.msn.com/

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

Reply via email to