Project

General

Profile

Bug #10711

Incorrect error message in coerce failed

Added by chrisseaton (Chris Seaton) almost 5 years ago. Updated over 4 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
[ruby-core:67405]

Description

$ ruby -v -e '1 & 1.2'
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
-e:1: warning: possibly useless use of & in void context
-e:1:in `&': 1.2 can't be coerced into Float (TypeError)
    from -e:1:in `<main>'

It's telling me it couldn't coerce a Float into a Float, when it probably means into an Integer (or maybe Fixnum?).

I looked at the C, but couldn't see where the problem is. coerce_failed seems to use the correct value to get the class for the error so must be something before there.

Associated revisions

Revision 34289fff
Added by normal almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 49224
Added by normalperson (Eric Wong) almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Revision 49224
Added by normal almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Revision 49224
Added by normal almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Revision 49224
Added by normal almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Revision 49224
Added by normal almost 5 years ago

numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Revision 636f1919
Added by naruse (Yui NARUSE) almost 5 years ago

merge revision(s) 49224,49234,49235: [Backport #10711]

    * numeric.c (bit_coerce): use original value for error message
      [ruby-core:67405] [Bug #10711]

    * test/ruby/test_numeric.rb (test_coerce): check error message

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49313 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 49313
Added by naruse (Yui NARUSE) almost 5 years ago

merge revision(s) 49224,49234,49235: [Backport #10711]

* numeric.c (bit_coerce): use original value for error message
  [ruby-core:67405] [Bug #10711]

* test/ruby/test_numeric.rb (test_coerce): check error message

Revision 459c590c
Added by naruse (Yui NARUSE) almost 5 years ago

merge revision(s) 49225: [Backport #10711]

    * test/ruby/test_numeric.rb (TestNumeric#test_coerce): fixed wrong message.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_2@49323 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 49323
Added by naruse (Yui NARUSE) almost 5 years ago

merge revision(s) 49225: [Backport #10711]

* test/ruby/test_numeric.rb (TestNumeric#test_coerce): fixed wrong message.

Revision 6b7e6324
Added by usa (Usaku NAKAMURA) almost 5 years ago

merge revision(s) 49224,49225,49234,49235: [Backport #10711]

    * numeric.c (bit_coerce): use original value for error message
      [ruby-core:67405] [Bug #10711]

    * test/ruby/test_numeric.rb (test_coerce): check error message

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_0_0@49443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 49443
Added by usa (Usaku NAKAMURA) almost 5 years ago

merge revision(s) 49224,49225,49234,49235: [Backport #10711]

* numeric.c (bit_coerce): use original value for error message
  [ruby-core:67405] [Bug #10711]

* test/ruby/test_numeric.rb (test_coerce): check error message

Revision ee151977
Added by usa (Usaku NAKAMURA) over 4 years ago

merge revision(s) 49224,49225,49234,49235: [Backport #10711]

    * numeric.c (bit_coerce): use original value for error message
      [ruby-core:67405] [Bug #10711]

    * test/ruby/test_numeric.rb (test_coerce): check error message

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@51067 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51067
Added by usa (Usaku NAKAMURA) over 4 years ago

merge revision(s) 49224,49225,49234,49235: [Backport #10711]

* numeric.c (bit_coerce): use original value for error message
  [ruby-core:67405] [Bug #10711]

* test/ruby/test_numeric.rb (test_coerce): check error message

Revision 759d1288
Added by usa (Usaku NAKAMURA) over 4 years ago

merge revision(s) 49235: [Backport #10711]

    numeric.c: fix message

    * numeric.c (coerce_failed): fix the error message on non-flonum

platforms.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@51124 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

Revision 51124
Added by usa (Usaku NAKAMURA) over 4 years ago

merge revision(s) 49235: [Backport #10711]

numeric.c: fix message

* numeric.c (coerce_failed): fix the error message on non-flonum

platforms.

History

Updated by normalperson (Eric Wong) almost 5 years ago

do_coerce modifies x, so stashing the original before seems to fix
the problem. Maybe I missed something else. Lightly-tested patch:

--- a/numeric.c
+++ b/numeric.c
@@ -3426,10 +3426,11 @@ static int
bit_coerce(VALUE *x, VALUE *y)
{
if (!FIXNUM_P(*y) && !RB_TYPE_P(*y, T_BIGNUM)) {

  • VALUE orig = *x; do_coerce(x, y, TRUE); if (!FIXNUM_P(*x) && !RB_TYPE_P(*x, T_BIGNUM) && !FIXNUM_P(*y) && !RB_TYPE_P(*y, T_BIGNUM)) {
  • coerce_failed(*x, *y);
  • coerce_failed(orig, *y); } } return TRUE;
#2

Updated by Anonymous almost 5 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

Applied in changeset r49224.


numeric.c: correct error message when coerce fails

  • numeric.c (bit_coerce): use original value for error message [ruby-core:67405] [Bug #10711]
  • test/ruby/test_numeric.rb (test_coerce): check error message

Updated by usa (Usaku NAKAMURA) almost 5 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED

memo: see also [ruby-core:67555], [ruby-core:67557], r49234 and r49235.

Updated by naruse (Yui NARUSE) almost 5 years ago

  • Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED to 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: DONE

ruby_2_2 r49313 merged revision(s) 49224,49234,49235.

Updated by usa (Usaku NAKAMURA) almost 5 years ago

  • Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: DONE to 2.0.0: DONE, 2.1: REQUIRED, 2.2: DONE

ruby_2_0_0 r49443 merged revision(s) 49224,49225,49234,49235.

Updated by usa (Usaku NAKAMURA) over 4 years ago

  • Backport changed from 2.0.0: DONE, 2.1: REQUIRED, 2.2: DONE to 2.0.0: DONE, 2.1: DONE, 2.2: DONE

ruby_2_1 r51067 merged revision(s) 49224,49225,49234,49235.

Also available in: Atom PDF