RubyNumeric.num2long throws wrong exception, and with typo in the message
-------------------------------------------------------------------------

                 Key: JRUBY-2127
                 URL: http://jira.codehaus.org/browse/JRUBY-2127
             Project: JRuby
          Issue Type: Bug
          Components: Core Classes/Modules
    Affects Versions: JRuby 1.1RC2
         Environment: Latest JRuby 1.1RC2
            Reporter: Vladimir Sizikov
            Assignee: Vladimir Sizikov
             Fix For: JRuby 1.1


num2long is being used in a number of methods, lilke Array#[], FixNum#[], 
FixNum's bitwise operators, and is currently throws TypeError when value is too 
big:

JRuby:
3[1e19] ==> TypeError: float 1.0E19out of range of integer

MRI:
RangeError: float 1e+19 out of range of integer

Also note a typo in the message (the space is missing after the value).
I've added some rubyspecs for this, and currently JRuby fails them:

1)
Fixnum#[] raises a RangeError when the given argument is out of range of 
Integer FAILED
Expected RangeError but got TypeError (float 8.0E19out of range of integer):
/opt/work/rubinius/./mspec/expectations.rb:10:in `fail_with'
/opt/work/rubinius/./mspec/expectations/should.rb:6:in `should'
/opt/work/rubinius/./spec/ruby/1.8/core/fixnum/element_reference_spec.rb:33
tmp/last_mspec.rb:15:in `call'
/opt/work/rubinius/./mspec/runner/runner.rb:136:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `each'
/opt/work/rubinius/./mspec/runner/runner.rb:130:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `describe'
/opt/work/rubinius/./spec/ruby/1.8/core/fixnum/element_reference_spec.rb:3
tmp/last_mspec.rb:15:in `load'
tmp/last_mspec.rb:15
tmp/last_mspec.rb:1:in `each'
tmp/last_mspec.rb:10

2)
Fixnum#<< raises a RangeError when the given argument is out of range of 
Integer FAILED
Expected RangeError but got TypeError (float 8.0E19out of range of integer):
/opt/work/rubinius/./mspec/expectations.rb:10:in `fail_with'
/opt/work/rubinius/./mspec/expectations/should.rb:6:in `should'
/opt/work/rubinius/./spec/ruby/1.8/core/fixnum/left_shift_spec.rb:39
tmp/last_mspec.rb:15:in `call'
/opt/work/rubinius/./mspec/runner/runner.rb:136:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `each'
/opt/work/rubinius/./mspec/runner/runner.rb:130:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `describe'
/opt/work/rubinius/./spec/ruby/1.8/core/fixnum/left_shift_spec.rb:3
tmp/last_mspec.rb:15:in `load'
tmp/last_mspec.rb:15
tmp/last_mspec.rb:1:in `each'
tmp/last_mspec.rb:10

4)
Array.[] raises a RangeError when the given argument is out of range of Integer 
FAILED
Expected RangeError but got TypeError (float 8.0E19out of range of integer):
/opt/work/rubinius/./mspec/expectations.rb:10:in `fail_with'
/opt/work/rubinius/./mspec/expectations/should.rb:6:in `should'
/opt/work/rubinius/./spec/ruby/1.8/core/array/element_reference_spec.rb:32
tmp/last_mspec.rb:15:in `call'
/opt/work/rubinius/./mspec/runner/runner.rb:136:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `each'
/opt/work/rubinius/./mspec/runner/runner.rb:130:in `describe'
/opt/work/rubinius/./mspec/runner/object.rb:11:in `describe'
/opt/work/rubinius/./spec/ruby/1.8/core/array/element_reference_spec.rb:9
tmp/last_mspec.rb:15:in `load'
tmp/last_mspec.rb:15
tmp/last_mspec.rb:1:in `each'
tmp/last_mspec.rb:10

Fix is coming.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to