<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Feb 8, 2015 at 6:41 AM, Sven Barth <span dir="ltr"><<a href="mailto:pascaldragon@googlemail.com" target="_blank">pascaldragon@googlemail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class=""><div class="h5">On 08.02.2015 04:10, silvioprog wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Hello,<br>
<br>
I'm trying to port a Delphi code to FPC, and it has a structure like:<br>
<br>
   TType = class(TObject)<br>
   end;<br>
<br>
   TTest<T1; T2: TType> = class(TObject)<br>
   end;<br>
<br>
   TFoo = class(TType)<br>
   end;<br>
<br>
   TBar = class(TTest<string, TFoo>)<br>
   end;<br>
<br>
I.e., T1 accepts any type, but T2 accepts _only_ TType and/or their<br>
descendants.<br>
<br>
I tried the following code in FPC:<br>
<br>
   TType = class(TObject)<br>
   end;<br>
<br>
   generic TTest<T1; T2: TType> = class(TObject)<br>
   end;<br>
<br>
   TFoo = class(TType)<br>
   end;<br>
<br>
   TBar = class(specialize TTest<string, TFoo>)<br>
   end;<br>
<br>
But:<br>
<br>
===<br>
Compile Project, Target: project1.exe: Exit code 1, Errors: 2<br>
Unit1.pas(30,34) Error: class type expected, but got "AnsiString"<br>
Unit1.pas(30,47) Error: class type expected, but got "<erroneous type>"<br>
===<br>
<br>
If I declare "T2" instead of "T2: TType", it compiles, but using this<br>
declaration, a programmer can use accidentally a non descendant type of<br>
TType.<br>
<br>
Is there an issue about this in bugtracker?<br>
</blockquote>
<br></div></div>
Looks like a bug. Please report.<br></blockquote><div><br></div><div>Done:</div><div><br></div><div><a href="http://bugs.freepascal.org/view.php?id=27424">http://bugs.freepascal.org/view.php?id=27424</a><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
As a workaround you can move the constraint to the first type instead of the second and specialize with "<TFoo, string>".<br></blockquote><div><br></div><div>I'll try it.</div><div><br></div><div>Thank you! (y)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Regards,<br>
Sven</blockquote><div> </div></div>-- <br><div class="gmail_signature">Silvio Clécio<br>My public projects - <a href="http://github.com/silvioprog" target="_blank">github.com/silvioprog</a></div>
</div></div>