From 4a690f0c99eeec1e95e922695c79f78fc85f48c5 Mon Sep 17 00:00:00 2001 From: Code Ass Date: Mon, 14 Aug 2017 05:59:55 +0900 Subject: [PATCH 1/3] Support escaped character literal --- lib/rdoc/ruby_lex.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/rdoc/ruby_lex.rb b/lib/rdoc/ruby_lex.rb index 7abcc37777..7843d9ce12 100644 --- a/lib/rdoc/ruby_lex.rb +++ b/lib/rdoc/ruby_lex.rb @@ -602,6 +602,7 @@ def lex_init() Token(TkQUESTION) else @lex_state = :EXPR_END + ch << getc if "\\" == ch Token(TkCHAR, "?#{ch}") end end From 950e388e7c9288aab9c0997997a8e473b6222020 Mon Sep 17 00:00:00 2001 From: Code Ass Date: Mon, 14 Aug 2017 06:00:12 +0900 Subject: [PATCH 2/3] Fix test_class_tokenize_character_literal --- test/test_rdoc_ruby_lex.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_rdoc_ruby_lex.rb b/test/test_rdoc_ruby_lex.rb index d8a920f42c..4fbfb0be16 100644 --- a/test/test_rdoc_ruby_lex.rb +++ b/test/test_rdoc_ruby_lex.rb @@ -63,10 +63,10 @@ def test_class_tokenize___END__ end def test_class_tokenize_character_literal - tokens = RDoc::RubyLex.tokenize "?\\", nil + tokens = RDoc::RubyLex.tokenize "?c", nil expected = [ - @TK::TkCHAR.new( 0, 1, 0, "?\\"), + @TK::TkCHAR.new( 0, 1, 0, "?c"), @TK::TkNL .new( 2, 1, 2, "\n"), ] From 989aefdb5fdb582140807121550431dc30bd37a2 Mon Sep 17 00:00:00 2001 From: Code Ass Date: Mon, 14 Aug 2017 06:00:35 +0900 Subject: [PATCH 3/3] Add test_class_tokenize_character_literal_with_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 4fbfb0be16..ea0ebb7fb1 100644 --- a/test/test_rdoc_ruby_lex.rb +++ b/test/test_rdoc_ruby_lex.rb @@ -73,6 +73,17 @@ def test_class_tokenize_character_literal assert_equal expected, tokens end + def test_class_tokenize_character_literal_with_escape + tokens = RDoc::RubyLex.tokenize "?\\s", nil + + expected = [ + @TK::TkCHAR.new( 0, 1, 0, "?\\s"), + @TK::TkNL .new( 3, 1, 3, "\n"), + ] + + assert_equal expected, tokens + end + def test_class_tokenize_def_heredoc tokens = RDoc::RubyLex.tokenize <<-'RUBY', nil def x