Heredocs do not appear to propagate file encoding -------------------------------------------------
Key: JRUBY-5300 URL: http://jira.codehaus.org/browse/JRUBY-5300 Project: JRuby Issue Type: Bug Components: Parser Reporter: Charles Oliver Nutter Assignee: Charles Oliver Nutter Fix For: JRuby 1.6 Recent parser work exposed this problem. Heredocs within an encoded file do not appear to propagate the encoding. File: {noformat} # encoding: utf-8 x = <<EOD él piDió Un bUen café EOD {noformat} Error: {noformat} ~/projects/rails/activesupport ➔ jruby --1.9 blah.rb : blah.rb:3: ASCII-8BIT mixed within UTF-8 (SyntaxError) ~/projects/rails/activesupport ➔ jruby -d -Xbacktrace.style=raw --1.9 blah.rb org.jruby.lexer.yacc.SyntaxException: ASCII-8BIT mixed within UTF-8 at org.jruby.lexer.yacc.StringTerm.mixedEscape(StringTerm.java:214) at org.jruby.lexer.yacc.StringTerm.parseStringIntoBuffer(StringTerm.java:301) at org.jruby.lexer.yacc.HeredocTerm.parseString(HeredocTerm.java:116) at org.jruby.lexer.yacc.RubyYaccLexer.yylex(RubyYaccLexer.java:941) at org.jruby.lexer.yacc.RubyYaccLexer.nextToken(RubyYaccLexer.java:311) at org.jruby.parser.Ruby19Parser.yyparse(Ruby19Parser.java:1417) at org.jruby.parser.Ruby19Parser.yyparse(Ruby19Parser.java:1368) at org.jruby.parser.Ruby19Parser.parse(Ruby19Parser.java:4237) at org.jruby.parser.Parser.parse(Parser.java:112) at org.jruby.parser.Parser.parse(Parser.java:94) at org.jruby.Ruby.parseFile(Ruby.java:2290) at org.jruby.Ruby.parseFile(Ruby.java:2295) at org.jruby.Ruby.parseFromMain(Ruby.java:444) at org.jruby.Ruby.runFromMain(Ruby.java:403) at org.jruby.Main.run(Main.java:304) at org.jruby.Main.run(Main.java:144) at org.jruby.Main.main(Main.java:113) Thread.java:1503:in `getStackTrace': blah.rb:3: ASCII-8BIT mixed within UTF-8 (SyntaxError) from RubyException.java:154:in `prepareBacktrace' from RaiseException.java:156:in `preRaise' from Ruby.java:3405:in `newRaiseException' from Ruby.java:3234:in `newSyntaxError' from Parser.java:140:in `parse' from Parser.java:94:in `parse' from Ruby.java:2290:in `parseFile' from Ruby.java:2295:in `parseFile' from Ruby.java:444:in `parseFromMain' from Ruby.java:403:in `runFromMain' from Main.java:304:in `run' from Main.java:144:in `run' from Main.java:113:in `main' {noformat} Possible fix: {noformat} diff --git a/src/org/jruby/lexer/yacc/HeredocTerm.java b/src/org/jruby/lexer/yacc/HeredocTerm.java index 81093ef..96cdf3e 100644 --- a/src/org/jruby/lexer/yacc/HeredocTerm.java +++ b/src/org/jruby/lexer/yacc/HeredocTerm.java @@ -82,6 +82,7 @@ public class HeredocTerm extends StrTerm { } ByteList str = new ByteList(); + str.setEncoding(lexer.getEncoding()); ISourcePosition position; if ((flags & RubyYaccLexer.STR_FUNC_EXPAND) == 0) { {noformat} -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email