[fpc-devel] Strange error / Why / generic in wrapper class
Martin Frb
lazarus at mfriebe.de
Fri Nov 28 14:51:58 CET 2025
The first 2 procedures show that
var v2: TWrap1.specialize TTest4<TObject>;
is valid. The generic can be specialized directly for the variable.
But, if that variable is anywhere within TWrap1, then it fails.
Why?
program p1;{$Mode objfpc}
type
TFoo = class
procedure Foo2;
end;
generic TGen<T2: TObject> = class
procedure Foo2;
end;
TWrap1 = class
public type
generic TTest4<T2: TObject> = class
procedure Foo2;
end;
public
procedure P1;
end;
var
gTest4: TWrap1.specialize TTest4<TObject>;
{ TFoo }
procedure TFoo.Foo2;
var
v2: TWrap1.specialize TTest4<TObject>;
begin
end;
procedure TGen.Foo2;
var
v2: TWrap1.specialize TTest4<TObject>;
begin
end;
// TWRAP1
procedure TWrap1.TTest4.Foo2;
var // V2: project1.lpr(50,32) Error: Parameters or result types
cannot contain local type definitions. Use a separate type definition in
a type block.
v2: TWrap1.specialize TTest4<TObject>;
begin
end;
procedure TWrap1.P1;
var // V2: project1.lpr(50,32) Error: Parameters or result types
cannot contain local type definitions. Use a separate type definition in
a type block.
v2: TWrap1.specialize TTest4<TObject>;
begin
end;
begin
end.
More information about the fpc-devel
mailing list