On Friday, January 25, 2013 14:35:08 kenji hara wrote: > 2013/1/25 deadalnix <[email protected]> > > > @function seems like an extra complication. Ambiguity between setter and > > getter for @properties when UFCS come into play are not solved. Functional > > style is impaired as you can't pass regular function around, just > > @function > > . You'll still find trap in generic code around the behavior of regular > > functions. > > That's a good point. We need to solve another ambiguity about top-level > @property function which have a parameter, between top-level property > setter and UFCS property getter. > > module abc; > @property int foo(int n); > > void main() { > foo = 1; // top-level property setter > 1.foo; // property getter with UFCS > } > > We cannot distinguish the two usages without adding any new features.
Well, better that then get rid of @property. The other big question is what to do with opDispatch, since unless we add the ability to overload on @property with opDispatch, then it can't work with both properties and non-property functions. Maybe opPropDispatch or somesuch could be introduced to solve that particular problem. As for the top-level property problem, we could do something like @property(set) / @property(get) to distinguish. Or if we don't want the extra complication, we can just leave it. As long as you can use it as both a getter and a setter, it works, even if it still allows for weird uses. It would be nice to have a way to disambiguate it however. - Jonathan M Davis
