On Thursday, 24 January 2013 at 08:35:01 UTC, Walter Bright wrote:
This has turned into a monster. We've taken 2 or 3 wrong turns
somewhere.
Perhaps we should revert to a simple set of rules.
1. Empty parens are optional. If there is an ambiguity with the
return value taking (), the () go on the return value.
2. the:
f = g
rewrite to:
f(g)
only happens if f is a function that only has overloads for ()
and (one argument). No variadics.
3. Parens are required for calling delegates or function
pointers.
4. No more @property.
This is lazy design, plain and simple. You say it's turned into
a monster, but @property, at its core, is simpler than the
heuristics
you've demonstrated here. To my mind, @property, properly
implemented
is simple:
@property functions may be called with no parens or with
assignment as
the singular argument. Non @property functions may not.
There. No complications. The only complications come from D's
history.
And then you want to turn it back? This seems a terrible idea --
the
deed is done, pull the trigger. Make @property mandatory for
property
functions.
-Bernard.