`IO#close_on_exec=` returns different value when called with `send, __send__, public_send` or not
$ ruby -v -e 'p(STDIN.close_on_exec = 42)' ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin20] 42
$ ruby -v -e 'p(STDIN.__send__ :close_on_exec=, 42)' ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin20] nil
Is this an intentional behavior?
ruby/spec has the test case, But I can't think any benefit this different returning value 🤔
Updated by Eregon (Benoit Daloze) 6 months ago
The PR looks good to me.
As you may know
recv.foo= value always return
value, no matter what the
foo= method returns.
So in general the return value of assignment methods might differ and is probably best to be ignored.
Updated by Eregon (Benoit Daloze) 3 months ago
Is there any reason to call close_on_exec= with
send/__send__, or to use its return value?
I would be on the side of "changing this should not hurt", but it seems other committers do not necessarily agree (I guess their point is code should not rely on that anyway).