summaryrefslogtreecommitdiff
path: root/test/irb/test_ruby-lex.rb
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2019-04-28 03:41:06 +0900
committeraycabta <aycabta@gmail.com>2019-04-30 14:40:06 +0900
commit94b740b2499242e1aca67f7bbf595e75e63abc40 (patch)
treea25a0b1aa3928968f8c0716fed98c4005f6fcb18 /test/irb/test_ruby-lex.rb
parent567cb1ae1d25b837bed6e91af1418c6a4f25cc90 (diff)
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/test_ruby-lex.rb')
-rw-r--r--test/irb/test_ruby-lex.rb108
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