aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--string.c2
-rw-r--r--test/ruby/test_string.rb5
3 files changed, 11 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5ea7021cdf..46bb1ad8a4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Nov 24 02:03:40 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * string.c (rb_str_setter): preserve encoding of global variable
+ name in error message.
+
Mon Nov 24 02:03:30 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* iseq.c (rb_insn_operand_intern): preserve encoding of method
diff --git a/string.c b/string.c
index 1fb78ec9ce..4a0df2aecb 100644
--- a/string.c
+++ b/string.c
@@ -7998,7 +7998,7 @@ void
rb_str_setter(VALUE val, ID id, VALUE *var)
{
if (!NIL_P(val) && !RB_TYPE_P(val, T_STRING)) {
- rb_raise(rb_eTypeError, "value of %s must be String", rb_id2name(id));
+ rb_raise(rb_eTypeError, "value of %"PRIsVALUE" must be String", rb_id2str(id));
}
*var = val;
}
diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb
index c0fd83e107..1285a1c120 100644
--- a/test/ruby/test_string.rb
+++ b/test/ruby/test_string.rb
@@ -2056,6 +2056,11 @@ class TestString < Test::Unit::TestCase
def test_setter
assert_raise(TypeError) { $/ = 1 }
+ name = "\u{5206 884c}"
+ assert_separately([], <<-"end;") # do
+ alias $#{name} $/
+ assert_raise_with_message(TypeError, /\\$#{name}/) { $#{name} = 1 }
+ end;
end
def test_to_id