On 07/06/2019 20:26, Ben Grasset wrote:
On Fri, Jun 7, 2019 at 1:47 PM Jonas Maebe <jo...@freepascal.org <mailto:jo...@freepascal.org>> wrote:

    It would be inconsistent to only allow such declaration for pointers,
    and not for other types (a programming language should strive to be as
    orthogonal as possible, with as few exceptions as possible).


I can't think of any particular variety of normal declaration *other* than pointer aliases that aren't allowed in parameter lists, though.

You mention them later:

Apart from that, what else is there? Parameters can be records, classes, objects, interfaces, function types, primitives, e.t.c.

None of these can be defined as a type in parameter lists. Keep in mind that "^Type" defines a new type. Semantically, it's at the same level as "0..5" and "record a, b: longint end;".

As you said, "array of type" is fine (in all modes, I think.) In fact,  > that's one of 
the reasons that the inability to use the "^" symbol in
front of a type for a pointer alias has always seemed like "missing" functionality to me, as the fact that arrays can work like that makes me think it's not unrealistic to implement the same kind of thing for pointers.

An open array has specific semantics that are completely different from any regular array type. Your "^Type" inline type definition would behave exactly the same as a regular pointer type definition.


Jonas
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to