diff options
author | aycabta <aycabta@gmail.com> | 2019-04-28 03:41:06 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2019-04-30 14:40:06 +0900 |
commit | 94b740b2499242e1aca67f7bbf595e75e63abc40 (patch) | |
tree | a25a0b1aa3928968f8c0716fed98c4005f6fcb18 /test/irb | |
parent | 567cb1ae1d25b837bed6e91af1418c6a4f25cc90 (diff) | |
download | ruby-94b740b2499242e1aca67f7bbf595e75e63abc40.tar.gz |
Use Ripper for IRB
The debug option of IRB is deleted because it's just for IRB's pure Ruby
parser.
Diffstat (limited to 'test/irb')
-rw-r--r-- | test/irb/test_ruby-lex.rb | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/test/irb/test_ruby-lex.rb b/test/irb/test_ruby-lex.rb deleted file mode 100644 index b07b4a2eb6..0000000000 --- a/test/irb/test_ruby-lex.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: false -require 'test/unit' -require 'irb/ruby-lex' -require 'stringio' - -module TestIRB - class TestRubyLex < Test::Unit::TestCase - def setup - @scanner = RubyLex.new - end - - def teardown - RubyLex.debug_level = 0 - end - - def test_set_input_proc - called = false - @scanner.set_input(nil) {called = true; nil} - @scanner.each_top_level_statement {} - assert(called) - end - - def test_comment - assert_equal([["#\n", 1]], top_level_statement("#\n")) - end - - def test_top_level_statement - result = top_level_statement("#{<<-"begin;"}#{<<~"end;"}") - begin; - begin - end - begin - end - end; - assert_equal([ - ["begin\n""end\n", 1], - ["begin\n""end\n", 3], - ], - result) - end - - def test_immature_statement - src = "if false\n" - assert_equal([[src, 1]], top_level_statement(src)) - end - - def test_prompt - prompts = [] - @scanner.set_prompt {|*a| - a << @scanner.instance_variable_get(:@lex_state) - unless prompts.last == a - prompts << a - end - } - src, lineno = "#{<<-"begin;"}#{<<~'end;'}", __LINE__+1 - begin; - # #;# LTYPE:INDENT:CONTINUE - x #;# -:0:- - x( #;# -:0:- - ) #;# -:1:* - a \ #;# -:0:- - #;# -:0:* - a; #;# -:0:- - a #;# -:0:- - #;# -:0:- - a #;# -:0:- - a = #;# -:0:- - ' #;# -:0:* - ' #;# ':0:* - if false or #;# -:0:- - true #;# -:1:* - a #;# -:1:- - " #;# -:1:- - " #;# ":1:- - begin #;# -:1:- - a #;# -:2:- - a #;# -:2:- - end #;# -:2:- - else #;# -:1:- - nil #;# -:1:- - end #;# -:1:- - end; - top_level_statement(src.gsub(/[ \t]*#;#.*/, '')) - src.each_line.with_index(1) do |line, i| - p = prompts.shift - next unless /#;#\s*(?:-|(?<ltype>\S)):(?<indent>\d+):(?:(?<cont>\*)|-)(?:.*FIXME:(?<fixme>.*))?/ =~ line - indent = indent.to_i - cont = (fixme && /`continue'/.match?(fixme)) ^ cont - assert_equal([ltype, indent, cont, i], p[0..3], "#{lineno+i}:#{p[4]}: #{line}") - end - end - - def top_level_statement(lines) - input = InputLines.new(lines, "r") - scanned = [] - @scanner.set_input(input) - @scanner.each_top_level_statement {|*e| - scanned << e - yield(*e) if defined?(yield) - } - scanned - end - - class InputLines < StringIO - alias encoding external_encoding - end - end -end |