<p dir="ltr">Absolutely agree.</p>
<p dir="ltr">I think it's pretty weak to say @property is a monster/failure, and then look at C# for instance where it's great.<br>
Finish the deed!</p>
<p dir="ltr">Your set of proposed rules are far more complex and non-uniform... what is the advantage to that complexity?</p>
<div class="gmail_quote">On 24 Jan 2013 19:15, "Bernard Helyer" <<a href="mailto:b.helyer@gmail.com">b.helyer@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Thursday, 24 January 2013 at 08:35:01 UTC, Walter Bright wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This has turned into a monster. We've taken 2 or 3 wrong turns somewhere.<br>
<br>
Perhaps we should revert to a simple set of rules.<br>
<br>
1. Empty parens are optional. If there is an ambiguity with the return value taking (), the () go on the return value.<br>
<br>
2. the:<br>
   f = g<br>
rewrite to:<br>
   f(g)<br>
only happens if f is a function that only has overloads for () and (one argument). No variadics.<br>
<br>
3. Parens are required for calling delegates or function pointers.<br>
<br>
4. No more @property.<br>
</blockquote>
<br>
This is lazy design, plain and simple. You say it's turned into<br>
a monster, but @property, at its core, is simpler than the heuristics<br>
you've demonstrated here. To my mind, @property, properly implemented<br>
is simple:<br>
<br>
@property functions may be called with no parens or with assignment as<br>
the singular argument. Non @property functions may not.<br>
<br>
There. No complications. The only complications come from D's history.<br>
And then you want to turn it back? This seems a terrible idea -- the<br>
deed is done, pull the trigger. Make @property mandatory for property<br>
functions.<br>
<br>
<br>
-Bernard.<br>
</blockquote></div>