From dfca38eaa2e9b134075742cc59e9e3a21c5f0c39 Mon Sep 17 00:00:00 2001 From: nobu Date: Mon, 25 Jan 2016 06:56:26 +0000 Subject: [PATCH] symbol.c: more informative error message * symbol.c (sym_check_asciionly): more informative error message with the encoding name and the inspected content. [ruby-core:73398] [Feature #12016] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53650 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ symbol.c | 3 ++- test/ruby/test_symbol.rb | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e76787c8a..77553fd006 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Mon Jan 25 15:55:30 2016 Nobuyoshi Nakada + + * symbol.c (sym_check_asciionly): more informative error message + with the encoding name and the inspected content. + [ruby-core:73398] [Feature #12016] + Mon Jan 25 09:38:26 2016 SHIBATA Hiroshi * test/ruby/test_string.rb: added testcase for next!, succ and succ! diff --git a/symbol.c b/symbol.c index 8e3e0c3c55..b37be2f65b 100644 --- a/symbol.c +++ b/symbol.c @@ -430,7 +430,8 @@ sym_check_asciionly(VALUE str) if (!rb_enc_asciicompat(rb_enc_get(str))) return FALSE; switch (rb_enc_str_coderange(str)) { case ENC_CODERANGE_BROKEN: - rb_raise(rb_eEncodingError, "invalid encoding symbol"); + rb_raise(rb_eEncodingError, "invalid symbol in encoding %s :%+"PRIsVALUE, + rb_enc_name(rb_enc_get(str)), str); case ENC_CODERANGE_7BIT: return TRUE; } diff --git a/test/ruby/test_symbol.rb b/test/ruby/test_symbol.rb index 8960bec0d1..5d42a5f92d 100644 --- a/test/ruby/test_symbol.rb +++ b/test/ruby/test_symbol.rb @@ -262,7 +262,7 @@ class TestSymbol < Test::Unit::TestCase assert_equal(Encoding::US_ASCII, "$-A".force_encoding("iso-8859-15").intern.encoding) assert_equal(Encoding::US_ASCII, "foobar~!".force_encoding("iso-8859-15").intern.encoding) assert_equal(Encoding::UTF_8, "\u{2192}".intern.encoding) - assert_raise(EncodingError) {"\xb0a".force_encoding("utf-8").intern} + assert_raise_with_message(EncodingError, /\\xb0/i) {"\xb0a".force_encoding("utf-8").intern} end def test_singleton_method