Open ChayimFriedman2 opened 3 years ago
While the other issue is being discussed (adding the API) would you like to go ahead and make a PR for this? It seems the agreement was reached that this is the correct behavior at least. :-)
Interesting point of view. As we usually do not really "use" setters, but what other languages call "property access".
Aka, we pretend there is no setter and we could write to the field/attribute directly:
obj.property = value
hence we have the idea from C etc. that:
var x = obj.property = value
assigns value to the variabel x after calling the setter property on the object obj.
In my opinion the compiler should take care on the level of that expression that this is the case. And there is no reason that the setter is returning its argument.
In fact the setter should return "this". And that also should be the responsibility of the compiler. So you can write:
obj.propertyOne(value).propertyTwo(anotherValue)
Albeit, while I'm typing this: I wonder if you can call a setter in wren, or if a setter can only be accessed via "="?
In Wren, assignment returns its value, like in C:
When implementing setters, we need to maintain this behavior:
Generally, the CLI do that, except in one foreign setter -
Stdin.isRaw=(_)
:https://github.com/wren-lang/wren-cli/blob/b82cf5a2e21ef54a8ac8347b27899edfeeffa724/src/module/io.c#L509-L525
Instead we should do: