<div dir="ltr"><div class="gmail_extra">The way FPC handles generics went against all other previous Pascal conventions. You always had </div><div class="gmail_extra"><br></div><div class="gmail_extra">A) type block </div>
<div class="gmail_extra"><br></div><div class="gmail_extra">which then is always followed by </div><div class="gmail_extra"><br></div><div class="gmail_extra">B) an identifier</div><div class="gmail_extra"><br></div><div class="gmail_extra">
and then a </div><div class="gmail_extra"><br></div><div class="gmail_extra">C) type definition terminated with a semi colon</div><div class="gmail_extra"><br></div><div class="gmail_extra">B and C can then be repeated in pairs until a different block is declared (const, var, threadvar, resourcestring, function, procedure, begin or end)</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">So what you always had with regards to a type block is:<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">A</div><div class="gmail_extra">  B C;</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">  B C;</div><div class="gmail_extra"><br></div><div class="gmail_extra">  B C;</div><div class="gmail_extra"><br></div><div class="gmail_extra">Where A is he keyword 'type', B is and identifier, and C is the type definition.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Then someone went and decided that rather than scan ahead for a < after the identifier, they wanted another keyword in front of B, which breaks the whole pattern.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">A</div><div class="gmail_extra">  B C;</div><div class="gmail_extra"><br></div><div class="gmail_extra">  generic B C;</div><div class="gmail_extra">
<br></div><div class="gmail_extra">  B C;</div><div><br></div></div></div>