From 4a948632442b735d306c9583f20f734b0bf7577c Mon Sep 17 00:00:00 2001 From: usa Date: Mon, 28 Jan 2008 02:26:23 +0000 Subject: [PATCH] * parse.y (parser_str_new): encoding of UTF-8 literal string in US-ASCII script is UTF-8. [ruby-dev:33406] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15285 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ parse.y | 2 +- test/ruby/test_m17n.rb | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index b0930a631a..1e09121d7b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jan 28 11:24:49 2008 NAKAMURA Usaku + + * parse.y (parser_str_new): encoding of UTF-8 literal string in + US-ASCII script is UTF-8. [ruby-dev:33406] + Mon Jan 28 10:25:59 2008 NAKAMURA Usaku * test/ruby/test_m17n.rb (test_magic_comment): add test. diff --git a/parse.y b/parse.y index 19b8ba658c..721e88cab2 100644 --- a/parse.y +++ b/parse.y @@ -4848,7 +4848,7 @@ parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *e if (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT) { rb_enc_associate(str, rb_usascii_encoding()); } - else if (enc0 == rb_usascii_encoding()) { + else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) { rb_enc_associate(str, rb_ascii8bit_encoding()); } } diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index c503cdbea3..3423a1d58a 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -153,6 +153,7 @@ class TestM17N < Test::Unit::TestCase def test_utf8_literal assert_equal(Encoding::UTF_8, "\u3042".encoding, "[ruby-dev:33406] \"\\u3042\".encoding") + assert_raise(SyntaxError) { eval(a('\u3052\x80')) } end def test_string_mixed_unicode