On 01/24/2013 03:34 AM, 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.

I somehow feel like someone read my article from a couple years ago (http://www.prowiki.org/wiki4d/wiki.cgi?DocComments/Property) and you implemented the less important part and consciously ignored the more important part.

The section titled "semantic rewriting of properties" is the important one. Do that. It removes a source of bugs and gives intuitive behavior to our property-functions (ex: prop++; works in general).

@property is considerably less meaningful: take it or leave it, I certainly won't care. It's a bikeshed full of personal opinions.

If we had godly hindsight, then we would have made fields non-addressable by default so that people get safe design behavior by default: non-addressable fields can be turned into properties (assuming property rewriting exists) without breaking API, which creates closure for the whole concept. There would, of course, have to be a way to make it possible to explicitly mark variables as addressable in cases where you need to make pointers to them. That non-addressability semantic might have helped reference-counting too. The mistake's made though; we'll probably just have to take that one in the gut.

Reply via email to