@property - take it behind the woodshed and shoot it?

mist none at none.none
Fri Jan 25 03:36:33 PST 2013


OK, it has become difficult to follow all thread (newsgroups are 
not that perfect for this), so I will do "tl; dr" in a form of I 
final proposal.

Basic statement 1: Breaking user code is inevitable
Basic statement 2: Special cases are indicators something wrong 
is with design
Basic statement 3: Data is not function. Function is not data. 
(Sorry, John von Neumann!) Property is data.

Proposal itself:
*) -property flag becomes no-op
*) parens for all callables are mandatory
*) parens for properties are prohibited
*) properties are always treated to be of type of their return 
data
*) As a consequence - in UFCS property always behaves as a 
parameter, never as function

Transition issues:
*) Before merging new behavior to master, staging is created from 
last backwards-compatible. Official announcement is made that it 
will be bug-fix supported for at least 6 months.
*) Meta bugzilla issue is created to make Phobos code more strict 
in this regard. Release with new behavior will be allowed to go 
to staging only after this issue is taken care of.
*) All property-related issues that ensure data-like behavior 
like "+=" are marked as preapproved.

And yes, I know that Andrei has already made his decision about 
optional parens and this is also a no-op. But oh well.


More information about the Digitalmars-d mailing list