[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