mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* object.c: Improve error for failed implicit conversions [Bug #7539]
* error.c: Adapt rdoc * test/ruby/test_object.rb: Test for above git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38979 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
115a51f8ec
commit
c34e9f23aa
4 changed files with 21 additions and 2 deletions
|
@ -1,3 +1,11 @@
|
|||
Wed Jan 30 07:00:16 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
|
||||
|
||||
* object.c: Improve error for failed implicit conversions [Bug #7539]
|
||||
|
||||
* error.c: Adapt rdoc
|
||||
|
||||
* test/ruby/test_object.rb: Test for above
|
||||
|
||||
Tue Jan 29 21:40:12 2013 Tanaka Akira <akr@fsij.org>
|
||||
|
||||
* lib/net/http/generic_request.rb (encode_multipart_form_data): remove
|
||||
|
|
2
error.c
2
error.c
|
@ -1390,7 +1390,7 @@ syserr_eqq(VALUE self, VALUE exc)
|
|||
*
|
||||
* <em>raises the exception:</em>
|
||||
*
|
||||
* TypeError: can't convert String into Integer
|
||||
* TypeError: no implicit conversion of String into Integer
|
||||
*
|
||||
*/
|
||||
|
||||
|
|
5
object.c
5
object.c
|
@ -2277,6 +2277,7 @@ static struct conv_method_tbl {
|
|||
{"to_s", 0},
|
||||
{NULL, 0}
|
||||
};
|
||||
#define IMPLICIT_CONVERSIONS 7
|
||||
|
||||
static VALUE
|
||||
convert_type(VALUE val, const char *tname, const char *method, int raise)
|
||||
|
@ -2296,7 +2297,9 @@ convert_type(VALUE val, const char *tname, const char *method, int raise)
|
|||
r = rb_check_funcall(val, m, 0, 0);
|
||||
if (r == Qundef) {
|
||||
if (raise) {
|
||||
rb_raise(rb_eTypeError, "can't convert %s into %s",
|
||||
rb_raise(rb_eTypeError, i < IMPLICIT_CONVERSIONS
|
||||
? "no implicit conversion of %s into %s"
|
||||
: "can't convert %s into %s",
|
||||
NIL_P(val) ? "nil" :
|
||||
val == Qtrue ? "true" :
|
||||
val == Qfalse ? "false" :
|
||||
|
|
|
@ -885,4 +885,12 @@ class TestObject < Test::Unit::TestCase
|
|||
assert_not_initialize_copy {st.new}
|
||||
assert_not_initialize_copy {Time.now}
|
||||
end
|
||||
|
||||
def test_type_error_message
|
||||
issue = "Bug #7539"
|
||||
err = assert_raise(TypeError){ Integer([42]) }
|
||||
assert_equal "can't convert Array into Integer", err.message, issue
|
||||
err = assert_raise(TypeError){ [].first([42]) }
|
||||
assert_equal 'no implicit conversion of Array into Integer', err.message, issue
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue