summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--re.c7
-rw-r--r--test/ruby/test_regexp.rb7
3 files changed, 14 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e067a6..8e2d720 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Wed Jan 30 07:15:04 2013 Marc-Andre Lafortune <ruby-core@marc-andre.ca>
+
+ * re.c (reg_operand): Simplify and reuse error handling [Bug #7539]
+
+ * test/ruby/test_regexp.rb: Test for above
+
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]
diff --git a/re.c b/re.c
index 17612d4..4e57971 100644
--- a/re.c
+++ b/re.c
@@ -2667,12 +2667,7 @@ reg_operand(VALUE s, int check)
return rb_sym_to_s(s);
}
else {
- VALUE tmp = rb_check_string_type(s);
- if (check && NIL_P(tmp)) {
- rb_raise(rb_eTypeError, "can't convert %s to String",
- rb_obj_classname(s));
- }
- return tmp;
+ return (check ? rb_str_to_str : rb_check_string_type)(s);
}
}
diff --git a/test/ruby/test_regexp.rb b/test/ruby/test_regexp.rb
index e9c866a..308b30a 100644
--- a/test/ruby/test_regexp.rb
+++ b/test/ruby/test_regexp.rb
@@ -929,4 +929,11 @@ class TestRegexp < Test::Unit::TestCase
# use Regexp.new instead of literal to ignore a parser warning.
check(Regexp.new('[0-1-\\s]'), [' ', '-'], ['2', 'a'], bug6853)
end
+
+ def test_error_message_on_failed_conversion
+ bug7539 = '[ruby-core:50733]'
+ assert_equal false, /x/=== 42
+ err = assert_raise(TypeError){ Regexp.quote(42) }
+ assert_equal 'no implicit conversion of Fixnum into String', err.message, bug7539
+ end
end