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.