<br><br><div class="gmail_quote">On Wed, Aug 3, 2011 at 3:34 PM, Michael Van Canneyt <span dir="ltr"><<a href="mailto:michael@freepascal.org">michael@freepascal.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div class="im"><br>

On Wed, 3 Aug 2011, Alexander Klenin wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
I also use 'with' extensively, despite the risks,<br>
since with the right usage the readablity gains are considerable.<br>
<br>
2011/8/3 Max Vlasov <<a href="mailto:max.vlasov@gmail.com" target="_blank">max.vlasov@gmail.com</a>>:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
1. Introducing a check in the compiler setting (or a conditional define)<br>
that could force the developer to use self inside 'with' constructions.<br>
</blockquote>
...<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
2. Some switch (maybe on by default) that prevents from compiling if there<br>
are several duplicate names in the same 'with' context (including global,<br>
local, fields).<br>
</blockquote>
<br>
Error is IMHO too severe. I think a warning if the name inside of<br>
'with' overrides a name from outer scope<br>
would be an acceptable compromise.<br>
<br>
Of course, a disambiguation facility would be even better,<br>
but I am afraid FPC developers will resist this improvement :(<br>
</blockquote>
<br></div>
Frankly, I don't understand the discussion.<br>
I use 'with' all the time because it increases readability and reduces typing.<br>
I don't want to be punished with heaps of warnings simply because I use a language feature. Yes, I am aware that there are risks involved.<br>
<br>
If you don't like 'with', then don't use it, end of story.<br>
<br>
Introducing the proposed switch is nonsense, since it is useful only when dealing with other people's code. For your own code, you don't need this switch. Simply don't use 'with', and you're safe. If you type 'with' anyway, that would be very inconsequent of you.<br>


<br></blockquote></div><br>Michael, one example from Sql<br>if you write something like <br><br>SELECT * FROM Detail LEFT JOIN Master on Detail.masterid=<a href="http://master.id">master.id</a> where id=34<br><br>sqlite and mysql, probably other dbms will stop you with 'ambiguous column name' error,<br>

The developers of these dbms could end up with some default way of context resolving (for example the last mentioned table in the sentence), but they did not. So many developers feel safer about the fact that if their detail table will get some field with the same name as one of master's, the dbms won't silently choose some field. I suppose this requirement could be even the part of SQL-92. Talking about standards, I also admit that Wirth probably never mentioned anything about the disambiguation resolving. But we also can be sure that there was no objects and classes when he worked with pascal so there were not much of a hidden context in the pascal sources. <br>

<br>By the way, there's the objfpc mode and it doesn't allow parameters have the same names as field names. This is different to Delphi and generally speaking I think this requirement lays in the same area as 'with' disambiguation if implemented. Both serve more or less the same goal, don't they? <br>

<br>Max<br>