I've got some things I like to see implemented in free pascal.
The first thing is the possibility to let units
include eachother. This is rather useful to code in a structured way in oop. For example suppose there's a class TMain, which has a child of type TChild. Of
course this child wants to know its parent by its type and the other way round. I want to split up my code so that the units don't become too big, so child and
parent are declared in different units. So the
situation is as follows:
{ t1.pas }
unit t1;
uses t2;
interface
type
TMain = class
Child: TChild;
.
end;
implementation
.
end.
{ t2.pas }
uses t1;
interface
type
TChild = class
constructor Create(owner: TMain);
.
end;
implementation
.
end.Compiling t1.pas yields a circular unit reference
error. A solution is typecasting, but isn't very nice. The real solution is to allow circular unit references in unit interfaces as well.
------------------------
The second feature request is the usage of identifiers while they're defined later on in the code. For
example, sometimes is looks more natural if some
procedure is defined before another one. Defining
procedures forward is a solution, but it would be
easier if this wouldn't be necessary.
------------------------
Third:
- dynamic arrays (var a: array of integer;)
- Variants
- out arguments (ie procedure p(out a: integer); ) like in Delphi
Fourth:
block local identifiers:
- if (...) then begin
var i: integer;
.
end;- 1) "with x := a[i].position.x do ..."
or better: defining identifier x at the same time
like
2) "with var x := a[i].position.x do ..."
or
3) "with const x: integer = a[i].position.x do ..."
I'd prefer construct 2) (so without mentioning x's
type explicitly). Construct 1) where x
is defined as a local variable elsewhere can also beuseful.
(Note: replies please to , I'm not
in the mailing list(s))
__________________________________________________ Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com
