<div dir="auto"><div><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">Martin Frb via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>> schrieb am Fr., 28. Nov. 2025, 14:52:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The first 2 procedures show that<br>
var v2: TWrap1.specialize TTest4<TObject>;<br>
<br>
is valid. The generic can be specialized directly for the variable.<br>
<br>
But, if that variable is anywhere within TWrap1, then it fails.<br>
Why?<br>
<br>
<br>
<br>
program p1;{$Mode objfpc}<br>
type<br>
<br>
TFoo = class<br>
procedure Foo2;<br>
end;<br>
<br>
generic TGen<T2: TObject> = class<br>
procedure Foo2;<br>
end;<br>
<br>
TWrap1 = class<br>
public type<br>
generic TTest4<T2: TObject> = class<br>
procedure Foo2;<br>
end;<br>
<br>
public<br>
procedure P1;<br>
end;<br>
<br>
var<br>
gTest4: TWrap1.specialize TTest4<TObject>;<br>
<br>
{ TFoo }<br>
<br>
procedure TFoo.Foo2;<br>
var<br>
v2: TWrap1.specialize TTest4<TObject>;<br>
begin<br>
end;<br>
<br>
procedure TGen.Foo2;<br>
var<br>
v2: TWrap1.specialize TTest4<TObject>;<br>
begin<br>
end;<br>
<br>
// TWRAP1<br>
<br>
procedure TWrap1.TTest4.Foo2;<br>
var // V2: project1.lpr(50,32) Error: Parameters or result types <br>
cannot contain local type definitions. Use a separate type definition in <br>
a type block.<br>
v2: TWrap1.specialize TTest4<TObject>;<br>
begin<br>
end;<br>
<br>
procedure TWrap1.P1;<br>
var // V2: project1.lpr(50,32) Error: Parameters or result types <br>
cannot contain local type definitions. Use a separate type definition in <br>
a type block.<br>
v2: TWrap1.specialize TTest4<TObject>;<br>
begin<br>
end;<br>
<br>
begin<br>
end.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Bug, please report. </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote gmail_quote_container"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>