Bug #5728
closed
SystemExit.new(bool, message)
Added by akr (Akira Tanaka) over 12 years ago.
Updated over 12 years ago.
Description
I found SystemExit.new doesn't take a bool as exit status:
It works well if an integer is given for status.
% ./ruby -e 'SystemExit.new(0, "msg")'
% ./ruby -e 'SystemExit.new(1, "msg")'
But it doesn't work if the status is a bool.
% ./ruby -e 'SystemExit.new(true, "msg")'
-e:1:in initialize': wrong number of arguments (2 for 0..1) (ArgumentError) from -e:1:in
initialize'
from -e:1:in new' from -e:1:in
'
% ./ruby -e 'SystemExit.new(false, "msg")'
-e:1:in initialize': wrong number of arguments (2 for 0..1) (ArgumentError) from -e:1:in
initialize'
from -e:1:in new' from -e:1:in
'
% ./ruby -v
ruby 2.0.0dev (2011-12-08 trunk 33981) [x86_64-linux]
I think SystemExit.new should accept a bool.
Files
I think SystemExit.new should accept a bool.
We have two choice and both are a lot of confusable.
- true => EXIT_SUCCESS, false => EXIT_FAILURE
People may dislike it becuase true mapped 0 and false mapped 1.
- true => EXIT_FAILURE, false => EXIT_SUCCESS
People also may dislike it. Because true usually isn't used for failure.
As far as EXIT_SUCCESS==0, I doubt we can make natural conversion.
=begin
I don't think we have two.
The latter choice is not acceptable, since the return value of (({Kernel#system})) and the first argument of (({Kernel#exit})) are same as the former.
And should not assume (({EXIT_SUCCESS})) to be 0.
=end
- ruby -v changed from ruby 2.0.0dev (2011-12-08 trunk 33981) [x86_64-linux] to -
2011/12/8 Nobuyoshi Nakada nobu@ruby-lang.org:
I don't think we have two.
The latter choice is not acceptable, since the return value of (({Kernel#system})) and the first argument of (({Kernel#exit})) are same as the former.
And should not assume (({EXIT_SUCCESS})) to be 0.
Agreed.
In addition, if this issue (#5728) and
Process::EXIT_SUCCESS/Process::EXIT_FAILIURE issue (#5726) are both rejected,
it is very diffcult to use SystemExit.new for EXIT_FAILURE.
Tanaka Akira
I don't think we have two.
The latter choice is not acceptable, since the return value of (({Kernel#system})) and the first argument of (({Kernel#exit})) are same as the former.
And should not assume (({EXIT_SUCCESS})) to be 0.
Agreed.
In addition, if this issue (#5728) and
Process::EXIT_SUCCESS/Process::EXIT_FAILIURE issue (#5726) are both rejected,
it is very diffcult to use SystemExit.new for EXIT_FAILURE.
I overlooked Kernel#exit. then I withdraw my argument. Thank you
for clarification. But, I'm still bit worry about confusable thing because
a lot of people know EXIT_SUCCESS==0 on their platform. so please
write a doc true convert to EXIT_SUCCES, and not 1 clearly.
Thank you.
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r34008.
Akira, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0