[fpc-devel] Problem (bug?) with generics
Giulio Bernardi
ugilio at hotmail.com
Fri Sep 14 09:01:59 CEST 2007
> 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
More information about the fpc-devel
mailing list