I'm working on the next iteration of my Plot2Kill library, and I **really** have fallen in love with property chaining. It's the greatest thing since sliced arrays. However, I've run into an issue that I had previously overlooked:
class Foo { Type _val; typeof(this) val(Type newVal) { _val = newVal; return this; } } class Bar : Foo { // More properties. } void main() { auto bar = new Bar; bar.val(someValue).barProperty(someOtherValue); // Won't work. } Given that D2 is mostly finalized, it may be a little late for this, but would it be feasible, at least far down the road, to add something like an @chain annotation, which would only allow a member function to return this and would implicitly downcast it to the subtype that was passed in as the this pointer? For example, assume we attached @chain to Foo.val(): pragma(msg, typeof(bar.val(someValue))); // Bar, not Foo.