From b5edf5a07a5aaccc0668cf5ecd6c9ed966cbe6da Mon Sep 17 00:00:00 2001 From: Code Ass Date: Thu, 3 Aug 2017 21:57:16 +0900 Subject: [PATCH 1/2] Fix escape behavior in single quote string literal Remove addtion unnecessary \ after escape character \. --- lib/rdoc/ruby_lex.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rdoc/ruby_lex.rb b/lib/rdoc/ruby_lex.rb index 7abcc37777..4225dc5335 100644 --- a/lib/rdoc/ruby_lex.rb +++ b/lib/rdoc/ruby_lex.rb @@ -1337,7 +1337,7 @@ def identify_string(ltype, quoted = ltype, type = nil) when @ltype str << ch else - ungetc + str << ch end else str << read_escape From df7453d047ce70b9d0ce365ab8fc760fa9728de8 Mon Sep 17 00:00:00 2001 From: Code Ass Date: Thu, 3 Aug 2017 22:04:46 +0900 Subject: [PATCH 2/2] Add test_class_tokenize_single_quote_escape --- test/test_rdoc_ruby_lex.rb | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/test_rdoc_ruby_lex.rb b/test/test_rdoc_ruby_lex.rb index d8a920f42c..567ae44750 100644 --- a/test/test_rdoc_ruby_lex.rb +++ b/test/test_rdoc_ruby_lex.rb @@ -417,6 +417,17 @@ def test_class_tokenize_regexp_continuing_backslash assert_equal expected, tokens end + def test_class_tokenize_single_quote_escape + tokens = RDoc::RubyLex.tokenize %q{'\\\\ \\' \\&'}, nil + + expected = [ + @TK::TkSTRING.new( 0, 1, 0, %q{'\\\\ \\' \\&'}), + @TK::TkNL .new(10, 1, 10, "\n"), + ] + + assert_equal expected, tokens + end + def test_class_tokenize_string tokens = RDoc::RubyLex.tokenize "'hi'", nil