summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-24 15:35:33 +0000
committernagachika <nagachika@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-24 15:35:33 +0000
commit9704c840361094663bf276131ad754a05736eaab (patch)
treec33b992ff5e5def0d96ec78b3f953b24cd65d51e
parent80aa5ce577f91c491d16332a07a7f32001a72137 (diff)
merge revision(s) r47090: [Backport #10114]
* parse.y (parser_yyerror): preserve source code encoding in syntax error messages. [ruby-core:64228] [Bug #10114] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_1@47267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--parse.y2
-rw-r--r--test/ruby/test_syntax.rb6
-rw-r--r--version.h6
4 files changed, 15 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c9cc66e4f4..034fa785a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Aug 25 00:26:12 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (parser_yyerror): preserve source code encoding in
+ syntax error messages. [ruby-core:64228] [Bug #10114]
+
Sat Aug 23 02:39:20 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
* vm_insnhelper.c (vm_call_method): unusable super class should cause
diff --git a/parse.y b/parse.y
index 3f01a22428..7f0c3525a0 100644
--- a/parse.y
+++ b/parse.y
@@ -5269,7 +5269,7 @@ parser_yyerror(struct parser_params *parser, const char *msg)
buf = ALLOCA_N(char, len+2);
MEMCPY(buf, p, char, len);
buf[len] = '\0';
- rb_compile_error_append("%s%s%s", pre, buf, post);
+ rb_compile_error_with_enc(NULL, 0, (void *)current_enc, "%s%s%s", pre, buf, post);
i = (int)(lex_p - p);
p2 = buf; pe = buf + len;
diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb
index 9fa28a4a8a..2ed57889ba 100644
--- a/test/ruby/test_syntax.rb
+++ b/test/ruby/test_syntax.rb
@@ -402,6 +402,12 @@ eom
end
end
+ def test_error_message_encoding
+ bug10114 = '[ruby-core:64228] [Bug #10114]'
+ code = "# -*- coding: utf-8 -*-\n" "def n \"\u{2208}\"; end"
+ assert_syntax_error(code, /def n "\u{2208}"; end/, bug10114)
+ end
+
private
def not_label(x) @result = x; @not_label ||= nil end
diff --git a/version.h b/version.h
index 16f3b82092..93d441f8ed 100644
--- a/version.h
+++ b/version.h
@@ -1,10 +1,10 @@
#define RUBY_VERSION "2.1.2"
-#define RUBY_RELEASE_DATE "2014-08-23"
-#define RUBY_PATCHLEVEL 207
+#define RUBY_RELEASE_DATE "2014-08-25"
+#define RUBY_PATCHLEVEL 208
#define RUBY_RELEASE_YEAR 2014
#define RUBY_RELEASE_MONTH 8
-#define RUBY_RELEASE_DAY 23
+#define RUBY_RELEASE_DAY 25
#include "ruby/version.h"