[fpc-devel] Generics
Michael Van Canneyt
michael at freepascal.org
Fri Aug 17 10:20:13 CEST 2007
On Fri, 17 Aug 2007, Florian Klaempfl wrote:
> 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.
OK, probably I should add this to the docs. I assume all types can be
defined except classes and generics ?
Michael.
More information about the fpc-devel
mailing list