[phobos] Time to get ready for the next release

Jonathan M Davis jmdavisProg at gmx.com
Sat Apr 23 16:27:37 PDT 2011


> On 22 apr 2011, at 00:28, Jonathan M Davis wrote:
> > Actually, setters _should_ return void. The chaining should be done by
> > calling both the getter and setter functions. The other options is a
> > property function which takes nothing but returns a ref. In either case,
> > the chaining would work.
> 
> Wouldn't this require some form of property rewriting?

Hmmm. Yes it would, which I was thinking was what properties were doing 
anyway, but now that I think on it, I'm not sure they do. The getter certainly 
doesn't, but I don't know about the setter. So, I'm not quite sure what the 
compiler is doing right now, but calling both the getter and setter for 
chained assignment would require a lowering.

Then again, now that I think of it, if you require both the getter and setter 
for chained assignment, chained assignment won't work for write-only 
properties. So, I don't know what the solution should be. It was my 
understanding that a function could _be_ a setter if it returned anything. It 
had to take a single value and return nothing (or take two values where the 
first was an array and you were calling it using the array's member function 
call syntax). And with that being the case, you _must_ use the getter to 
generate chained assignments.

So, now I'm a bit confused on the chained assignment bit. The fact that the 
compiler virtually ignores @property right now makes it much harder to 
determine how it's supposed to work. It was my understanding that

T prop() //getter
void prop(T val) //setter
ref T prop() //both getter and setter

were supposed to be the only valid signatures for getters and setters (save 
for the addition of the array parameter with arrays), and it seems like that's 
not currently true. TDPL is very specific that the syntax is supposed to be 
strictly enforced, but it's not very specific on the correct signatures for 
getters and setters.

So, after this discussion, I'm at least marginally confused. Certainly, a lot 
of what some folks expect of properties comes from what currently works rather 
than what's supposed to work, and what's supposed to work is not always clear 
- at least as far as the exact signatures for getters and setters go.

- Jonathan M Davis


More information about the phobos mailing list