parser 2.6.0.0 → 3.1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/parser/all.rb +3 -0
- data/lib/parser/ast/processor.rb +48 -1
- data/lib/parser/base.rb +30 -6
- data/lib/parser/builders/default.rb +670 -38
- data/lib/parser/context.rb +24 -26
- data/lib/parser/current.rb +36 -9
- data/lib/parser/current_arg_stack.rb +46 -0
- data/lib/parser/diagnostic/engine.rb +1 -2
- data/lib/parser/diagnostic.rb +1 -1
- data/lib/parser/lexer/dedenter.rb +58 -49
- data/lib/parser/lexer/explanation.rb +1 -1
- data/lib/parser/lexer.rb +13837 -11893
- data/lib/parser/macruby.rb +2544 -2489
- data/lib/parser/max_numparam_stack.rb +56 -0
- data/lib/parser/messages.rb +78 -44
- data/lib/parser/meta.rb +13 -3
- data/lib/parser/ruby18.rb +2313 -2259
- data/lib/parser/ruby19.rb +2537 -2488
- data/lib/parser/ruby20.rb +2724 -2673
- data/lib/parser/ruby21.rb +2766 -2727
- data/lib/parser/ruby22.rb +2683 -2628
- data/lib/parser/ruby23.rb +2796 -2755
- data/lib/parser/ruby24.rb +2812 -2771
- data/lib/parser/ruby25.rb +2703 -2670
- data/lib/parser/ruby26.rb +2794 -2747
- data/lib/parser/ruby27.rb +7914 -0
- data/lib/parser/ruby28.rb +8047 -0
- data/lib/parser/ruby30.rb +8096 -0
- data/lib/parser/ruby31.rb +8354 -0
- data/lib/parser/rubymotion.rb +2527 -2485
- data/lib/parser/runner/ruby_parse.rb +2 -2
- data/lib/parser/runner/ruby_rewrite.rb +2 -2
- data/lib/parser/runner.rb +36 -2
- data/lib/parser/source/buffer.rb +53 -28
- data/lib/parser/source/comment/associator.rb +31 -8
- data/lib/parser/source/comment.rb +14 -1
- data/lib/parser/source/map/method_definition.rb +25 -0
- data/lib/parser/source/range.rb +19 -3
- data/lib/parser/source/tree_rewriter/action.rb +137 -28
- data/lib/parser/source/tree_rewriter.rb +144 -14
- data/lib/parser/static_environment.rb +23 -0
- data/lib/parser/tree_rewriter.rb +3 -3
- data/lib/parser/variables_stack.rb +36 -0
- data/lib/parser/version.rb +1 -1
- data/lib/parser.rb +4 -0
- data/parser.gemspec +12 -19
- metadata +34 -99
- data/.gitignore +0 -32
- data/.travis.yml +0 -45
- data/.yardopts +0 -21
- data/CHANGELOG.md +0 -943
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -10
- data/README.md +0 -301
- data/Rakefile +0 -165
- data/ci/run_rubocop_specs +0 -14
- data/doc/AST_FORMAT.md +0 -1735
- data/doc/CUSTOMIZATION.md +0 -37
- data/doc/INTERNALS.md +0 -21
- data/doc/css/.gitkeep +0 -0
- data/doc/css/common.css +0 -68
- data/lib/parser/lexer.rl +0 -2383
- data/lib/parser/macruby.y +0 -2198
- data/lib/parser/ruby18.y +0 -1934
- data/lib/parser/ruby19.y +0 -2175
- data/lib/parser/ruby20.y +0 -2353
- data/lib/parser/ruby21.y +0 -2357
- data/lib/parser/ruby22.y +0 -2364
- data/lib/parser/ruby23.y +0 -2370
- data/lib/parser/ruby24.y +0 -2408
- data/lib/parser/ruby25.y +0 -2405
- data/lib/parser/ruby26.y +0 -2413
- data/lib/parser/rubymotion.y +0 -2182
- data/test/bug_163/fixtures/input.rb +0 -5
- data/test/bug_163/fixtures/output.rb +0 -5
- data/test/bug_163/rewriter.rb +0 -20
- data/test/helper.rb +0 -52
- data/test/parse_helper.rb +0 -315
- data/test/racc_coverage_helper.rb +0 -133
- data/test/test_base.rb +0 -31
- data/test/test_current.rb +0 -27
- data/test/test_diagnostic.rb +0 -96
- data/test/test_diagnostic_engine.rb +0 -62
- data/test/test_encoding.rb +0 -99
- data/test/test_lexer.rb +0 -3543
- data/test/test_lexer_stack_state.rb +0 -78
- data/test/test_parse_helper.rb +0 -80
- data/test/test_parser.rb +0 -7087
- data/test/test_runner_rewrite.rb +0 -47
- data/test/test_source_buffer.rb +0 -162
- data/test/test_source_comment.rb +0 -36
- data/test/test_source_comment_associator.rb +0 -367
- data/test/test_source_map.rb +0 -15
- data/test/test_source_range.rb +0 -172
- data/test/test_source_rewriter.rb +0 -541
- data/test/test_source_rewriter_action.rb +0 -46
- data/test/test_source_tree_rewriter.rb +0 -173
- data/test/test_static_environment.rb +0 -45
- data/test/using_tree_rewriter/fixtures/input.rb +0 -3
- data/test/using_tree_rewriter/fixtures/output.rb +0 -3
- data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -1,62 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'helper'
|
4
|
-
|
5
|
-
class TestDiagnosticEngine < Minitest::Test
|
6
|
-
def setup
|
7
|
-
@buffer = Parser::Source::Buffer.new('(source)')
|
8
|
-
@buffer.source = 'foobar'
|
9
|
-
|
10
|
-
@engine = Parser::Diagnostic::Engine.new
|
11
|
-
|
12
|
-
@queue = []
|
13
|
-
@engine.consumer = lambda { |diag| @queue << diag }
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_process_warnings
|
17
|
-
warn = Parser::Diagnostic.new(:warning, :invalid_escape, @buffer, 1..2)
|
18
|
-
@engine.process(warn)
|
19
|
-
|
20
|
-
assert_equal [warn], @queue
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_ignore_warnings
|
24
|
-
@engine.ignore_warnings = true
|
25
|
-
|
26
|
-
warn = Parser::Diagnostic.new(:warning, :invalid_escape, @buffer, 1..2)
|
27
|
-
@engine.process(warn)
|
28
|
-
|
29
|
-
assert_equal [], @queue
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_all_errors_are_fatal
|
33
|
-
@engine.all_errors_are_fatal = true
|
34
|
-
|
35
|
-
error = Parser::Diagnostic.new(:error, :invalid_escape, @buffer, 1..2)
|
36
|
-
|
37
|
-
err = assert_raises Parser::SyntaxError do
|
38
|
-
@engine.process(error)
|
39
|
-
end
|
40
|
-
|
41
|
-
assert_equal error, err.diagnostic
|
42
|
-
|
43
|
-
assert_equal [error], @queue
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_all_errors_are_collected
|
47
|
-
error = Parser::Diagnostic.new(:error, :invalid_escape, @buffer, 1..2)
|
48
|
-
@engine.process(error)
|
49
|
-
|
50
|
-
assert_equal [error], @queue
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_fatal_error
|
54
|
-
fatal = Parser::Diagnostic.new(:fatal, :invalid_escape, @buffer, 1..2)
|
55
|
-
|
56
|
-
assert_raises Parser::SyntaxError do
|
57
|
-
@engine.process(fatal)
|
58
|
-
end
|
59
|
-
|
60
|
-
assert_equal [fatal], @queue
|
61
|
-
end
|
62
|
-
end
|
data/test/test_encoding.rb
DELETED
@@ -1,99 +0,0 @@
|
|
1
|
-
# encoding: binary
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'helper'
|
5
|
-
|
6
|
-
class TestEncoding < Minitest::Test
|
7
|
-
include AST::Sexp
|
8
|
-
|
9
|
-
def recognize(string)
|
10
|
-
Parser::Source::Buffer.recognize_encoding(string)
|
11
|
-
end
|
12
|
-
|
13
|
-
require 'parser/all'
|
14
|
-
|
15
|
-
def test_default
|
16
|
-
assert_nil recognize('foobar')
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_bom
|
20
|
-
assert_equal Encoding::UTF_8, recognize("\xef\xbb\xbf\nfoobar")
|
21
|
-
assert_equal Encoding::UTF_8, recognize("\xef\xbb\xbf# coding:koi8-r\nfoobar")
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_magic_comment
|
25
|
-
assert_equal Encoding::KOI8_R, recognize("# coding:koi8-r\nfoobar")
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_shebang
|
29
|
-
assert_equal Encoding::KOI8_R, recognize("#!/bin/foo\n# coding:koi8-r\nfoobar")
|
30
|
-
assert_nil recognize("#!/bin/foo\n")
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_case
|
34
|
-
assert_equal Encoding::KOI8_R, recognize("# coding:KoI8-r\nfoobar")
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_space
|
38
|
-
assert_equal Encoding::KOI8_R, recognize("# coding : koi8-r\nfoobar")
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_empty
|
42
|
-
assert_nil recognize('')
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_no_comment
|
46
|
-
assert_nil recognize(%{require 'cane/encoding_aware_iterator'})
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_adjacent
|
50
|
-
assert_nil recognize('# codingkoi8-r')
|
51
|
-
assert_nil recognize('# coding koi8-r')
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_utf8_mac
|
55
|
-
assert_equal Encoding::UTF8_MAC, recognize('# coding: utf8-mac')
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_suffix
|
59
|
-
assert_equal Encoding::UTF_8, recognize('# coding: utf-8-dos')
|
60
|
-
assert_equal Encoding::UTF_8, recognize('# coding: utf-8-unix')
|
61
|
-
assert_equal Encoding::UTF_8, recognize('# coding: utf-8-mac')
|
62
|
-
|
63
|
-
assert_raises(ArgumentError) do
|
64
|
-
assert_nil recognize('# coding: utf-8-dicks')
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_parse_18_invalid_enc
|
69
|
-
ast = Parser::Ruby18.parse("# encoding:feynman-diagram\n1")
|
70
|
-
assert_equal ast, s(:int, 1)
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_parse_19_invalid_enc
|
74
|
-
assert_raises(ArgumentError) do
|
75
|
-
Parser::Ruby19.parse("# encoding:feynman-diagram\n1")
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_ending_comment
|
80
|
-
assert_nil recognize('foo # coding: koi8-r')
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_wrong_prefix
|
84
|
-
assert_nil recognize('# decoding: koi8-r')
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_no_spaces
|
88
|
-
assert_equal Encoding::KOI8_R, recognize('#encoding:koi8-r')
|
89
|
-
assert_equal Encoding::KOI8_R, recognize('#coding:koi8-r')
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_underscore_and_star_characters
|
93
|
-
assert_equal Encoding::KOI8_R, recognize('# -*- encoding: koi8-r -*-')
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_garbage_around_encoding_comment
|
97
|
-
assert_equal Encoding::KOI8_R, recognize('# 1$# -*- &)* encoding: koi8-r 1$# -*- &)*')
|
98
|
-
end
|
99
|
-
end
|