Feature #17745
closed
`IO#close_on_exec=` returns different value when called with `send, __send__, public_send` or not
Added by kachick (Kenichi Kamiya) about 3 years ago.
Updated almost 3 years ago.
Description
$ 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 🤔
PR: https://github.com/ruby/ruby/pull/4321
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.
I also think the "returns nil" example should be removed simply.
- Tracker changed from Bug to Feature
- ruby -v deleted (
ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin20])
- Backport deleted (
2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN)
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).
- Status changed from Open to Closed
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0