[fpc-pascal] a proposal about "with" syntax

Flávio Etrusco flavio.etrusco at gmail.com
Sun Mar 17 15:15:22 CET 2013


> On 17/03/2013 12:54, Marco van de Voort wrote:
>>
>> Since it is a pseudo variable declaration, I would assume VAR syntax and
>> just use ":" ?

This is indeed better.


On Sun, Mar 17, 2013 at 10:51 AM, Martin <lazarus at mfriebe.de> wrote:
> Or maybe it should require a "variable" declaration (or otherwise declared
> identifier with fixed type).
>
> Otherwise it goes into an undesirable direction:
>
> Function Foo;
> begin
>   with a: SomeInteger do Work(a);
>   with a: SomeBoolean do Work(a);
> end;
>
> a is first integer, then boolean within the same scope. *Very* confusing.

This is what already happens between the members of "aliased"
variables, and that's IMO reason for the proposal.
So I don't see a problem, on the contrary, it's progress since it
needs a more direct/clearer user "error" to be bitten by it.


> And very close to the next step (which of course can be rejected by the
> compiler)

It would be better.


> Function Foo;
> begin
>   with a: SomeInteger do begin
>      Work(a);
>      with a: SomeBoolean do Work(a); // masking a
>   end;
> end;
>
> But if the inner a was Integer too, then maybe it should work? Unless it
> gets a similar special status like a loop variable?

I don't think so.

> -------------------
> IIRC in other threads on this topic, some people explicitly stated they
> wanted this feature so the would not need to declare "a" first (I may
> remember this wrong).
> IMHO starting with the first loop hole of allowing an undeclared identifier
> to be used, is just opening the door to more and more weakening of the
> language requirement.
> Besides, it does not hurt, if "a" needs to be declared.

My POV is "with" already implies an undeclared variable.

Regards,
Flávio



More information about the fpc-pascal mailing list