Charles A. Lanahan created JRUBY-6632:
-----------------------------------------

             Summary: BigDecimal.new fails when passed anything but string 
(Float, BigDecimal, Fixnum)
                 Key: JRUBY-6632
                 URL: https://jira.codehaus.org/browse/JRUBY-6632
             Project: JRuby
          Issue Type: Bug
          Components: Standard Library
    Affects Versions: JRuby 1.6.3, JRuby 1.7
         Environment: Linux, 

daidoji@darkstar:~$ java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) Client VM (build 20.0-b11, mixed mode, sharing)
            Reporter: Charles A. Lanahan
            Assignee: Thomas E Enebo


Code below, According to documentation 
http://www.ruby-doc.org/stdlib-1.9.3/libdoc/bigdecimal/rdoc/BigDecimal.html#method-c-new
 should take any numeric type or string when creating a RubyBigDecimal object.  
However, Jruby fails on all of these.  (Note: MRI seems to fail as well but for 
unrelated reasons I suppose https://gist.github.com/2552909).  

Issue seems to be  this code below in RubyBigDecimal.java.  convertToString() 
is the line it fails on.  Error that appears is from util/TypeConverter.java 
which RubyBasicObject.java uses to convert methods to string using the "to_str" 
method.   

@JRubyMethod(name = "new", required = 1, optional = 1, meta = true)
  309       public static RubyBigDecimal newInstance(IRubyObject recv, 
IRubyObject[] args) {
  310           BigDecimal decimal;
  311           if (args.length == 0) { 
  312               decimal = new BigDecimal(0);
  313           } else {
  314               String strValue = args[0].convertToString().toString();
  315               strValue = strValue.trim();
  316               if ("NaN".equals(strValue)) {
  317                   return newNaN(recv.getRuntime());
  318               }

daidoji@darkstar:~$ cat foo.rb
require 'bigdecimal'

a = BigDecimal(1.0)
b = BigDecimal(1)
c = BigDecimal(2/3)
d = BigDecimal(BigDecimal("1"))
daidoji@darkstar:~$ java -jar jruby/lib/jruby.jar -v
jruby 1.7.0.dev (ruby-1.9.3-p139) (2012-04-29 3b4ea85) (Java HotSpot(TM) Client 
VM 1.6.0_25) [linux-i386-java]
rubygems.rb not found; disabling gems
daidoji@darkstar:~$ java -jar jruby/lib/jruby.jar foo.rb
TypeError: can't convert Float into String
     new at org/jruby/ext/bigdecimal/RubyBigDecimal.java:453
  (root) at foo.rb:3

daidoji@darkstar:~$ vim foo.rb

Press ENTER or type command to continue
  syntax=daidoji@darkstar:~$ java -jar jruby/lib/jruby.jar foo.rb
TypeError: can't convert Fixnum into String
     new at org/jruby/ext/bigdecimal/RubyBigDecimal.java:453
  (root) at foo.rb:4
daidoji@darkstar:~$ vim foo.rb

Press ENTER or type command to continue
  syntax=daidoji@darkstar:~$ java -jar jruby/lib/jruby.jar foo.rb
TypeError: can't convert Fixnum into String
     new at org/jruby/ext/bigdecimal/RubyBigDecimal.java:453
  (root) at foo.rb:5
daidoji@darkstar:~$ vim foo.rb

Press ENTER or type command to continue
  syntax=daidoji@darkstar:~$ java -jar jruby/lib/jruby.jar foo.rb
TypeError: can't convert BigDecimal into String
     new at org/jruby/ext/bigdecimal/RubyBigDecimal.java:453
  (root) at foo.rb:6
daidoji@darkstar:~$


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.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