[ruby-trunk - Bug #5728][Open] SystemExit.new(bool, message)

Issue #5728 has been reported by Akira T…


Bug #5728: SystemExit.new(bool, message)

Author: Akira T.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2011-12-08 trunk 33981) [x86_64-linux]

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.

Issue #5728 has been updated by Motohiro KOSAKI.

I think SystemExit.new should accept a bool.

We have two choice and both are a lot of confusable.

  1. true => EXIT_SUCCESS, false => EXIT_FAILURE
    People may dislike it becuase true mapped 0 and false mapped 1.
  2. 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.


Bug #5728: SystemExit.new(bool, message)

Author: Akira T.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2011-12-08 trunk 33981) [x86_64-linux]

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.

Issue #5728 has been updated by Nobuyoshi N…

=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


Bug #5728: SystemExit.new(bool, message)

Author: Akira T.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0dev (2011-12-08 trunk 33981) [x86_64-linux]

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.

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.

2011/12/8 Nobuyoshi N. [email protected]:

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.

Issue #5728 has been updated by Akira T…

File system-exit-bool.patch added

I wrote a patch.

Bug #5728: SystemExit.new(bool, message)

Author: Akira T.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: -

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.