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.

Reply via email to