[fpc-devel] Generics
Florian Klaempfl
florian at freepascal.org
Fri Aug 17 10:19:48 CEST 2007
Michael Van Canneyt schrieb:
>
> On Fri, 17 Aug 2007, Florian Klaempfl wrote:
>
>> Mattias Gaertner schrieb:
>>> On Thu, 16 Aug 2007 23:31:25 +0200 (CEST)
>>> Michael Van Canneyt <michael at freepascal.org> wrote:
>>>
>>>> [...]
>>>>> Why is the local variable block needed?
>>>> It is not. I asked the same question. It was added for symmetry
>>>> reasons: if a local type block is allowed, then a var block should
>>>> also be allowed.
>>>>
>>>> But they are not different from local fields.
>>> Strange. ok.
>>>
>>> What local types are/will be allowed?
>>>
>>> For example, this is currently not allowed:
>>>
>>> generic TTree<T> = class(TObject)
>>> type public TTreeNode = specialize TNode<T>;
>>> end;
>>>
>>> And this neither:
>>>
>>> generic TTree<T> = class(TObject)
>>> type public
>>> TTreeNode = class
>>> Data: T;
>>> end;
>>> end;
>>>
>>>
>>> OTOH records and pointers are allowed.
>>> Will this stay, or is this just not yet implemented?
>> Is there a need to support this?
>
> Well, it seems rather strange that the type block would not allow all
> possible types.
Only a few types can be generic as well. Nested classes cause a lot of
hidden pitfalls, that's why they aren't allowed.
More information about the fpc-devel
mailing list