parser 2.7.1.4 → 3.0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/parser/all.rb +1 -1
- data/lib/parser/ast/processor.rb +3 -7
- data/lib/parser/base.rb +7 -5
- data/lib/parser/builders/default.rb +177 -28
- data/lib/parser/context.rb +4 -0
- data/lib/parser/current.rb +9 -9
- data/lib/parser/current_arg_stack.rb +5 -2
- data/lib/parser/lexer.rb +813 -803
- data/lib/parser/macruby.rb +1 -1
- data/lib/parser/max_numparam_stack.rb +13 -5
- data/lib/parser/messages.rb +3 -0
- data/lib/parser/meta.rb +7 -6
- data/lib/parser/ruby18.rb +7 -3
- data/lib/parser/ruby19.rb +1 -1
- data/lib/parser/ruby20.rb +1 -1
- data/lib/parser/ruby21.rb +1 -1
- data/lib/parser/ruby22.rb +1 -1
- data/lib/parser/ruby23.rb +1 -1
- data/lib/parser/ruby24.rb +1 -1
- data/lib/parser/ruby25.rb +1 -1
- data/lib/parser/ruby26.rb +1 -1
- data/lib/parser/ruby27.rb +3720 -3701
- data/lib/parser/ruby30.rb +8060 -0
- data/lib/parser/rubymotion.rb +1 -1
- data/lib/parser/runner.rb +4 -4
- data/lib/parser/source/buffer.rb +45 -27
- data/lib/parser/source/comment/associator.rb +1 -1
- data/lib/parser/source/comment.rb +1 -1
- data/lib/parser/source/map/{endless_definition.rb → method_definition.rb} +5 -3
- data/lib/parser/source/range.rb +2 -2
- data/lib/parser/static_environment.rb +4 -0
- data/lib/parser/variables_stack.rb +4 -0
- data/lib/parser/version.rb +1 -1
- data/lib/parser.rb +1 -1
- data/parser.gemspec +1 -17
- metadata +8 -97
- data/.gitignore +0 -34
- data/.travis.yml +0 -40
- data/.yardopts +0 -21
- data/CHANGELOG.md +0 -1116
- data/CONTRIBUTING.md +0 -17
- data/Gemfile +0 -10
- data/README.md +0 -309
- data/Rakefile +0 -167
- data/ci/run_rubocop_specs +0 -14
- data/doc/AST_FORMAT.md +0 -2283
- 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 -2550
- data/lib/parser/macruby.y +0 -2208
- data/lib/parser/ruby18.y +0 -1936
- data/lib/parser/ruby19.y +0 -2185
- data/lib/parser/ruby20.y +0 -2363
- data/lib/parser/ruby21.y +0 -2364
- data/lib/parser/ruby22.y +0 -2371
- data/lib/parser/ruby23.y +0 -2377
- data/lib/parser/ruby24.y +0 -2415
- data/lib/parser/ruby25.y +0 -2412
- data/lib/parser/ruby26.y +0 -2420
- data/lib/parser/ruby27.y +0 -2950
- data/lib/parser/ruby28.y +0 -3043
- data/lib/parser/rubymotion.y +0 -2192
- 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 -103
- data/test/parse_helper.rb +0 -323
- data/test/racc_coverage_helper.rb +0 -133
- data/test/test_ast_processor.rb +0 -32
- data/test/test_base.rb +0 -31
- data/test/test_current.rb +0 -31
- data/test/test_diagnostic.rb +0 -95
- data/test/test_diagnostic_engine.rb +0 -59
- data/test/test_encoding.rb +0 -99
- data/test/test_lexer.rb +0 -3617
- data/test/test_lexer_stack_state.rb +0 -78
- data/test/test_meta.rb +0 -12
- data/test/test_parse_helper.rb +0 -80
- data/test/test_parser.rb +0 -9780
- data/test/test_runner_parse.rb +0 -56
- data/test/test_runner_rewrite.rb +0 -47
- data/test/test_source_buffer.rb +0 -165
- data/test/test_source_comment.rb +0 -36
- data/test/test_source_comment_associator.rb +0 -399
- data/test/test_source_map.rb +0 -14
- data/test/test_source_range.rb +0 -192
- 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 -361
- 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
data/lib/parser/macruby.rb
CHANGED
|
@@ -2,23 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
module Parser
|
|
4
4
|
|
|
5
|
+
# Holds p->max_numparam from parse.y
|
|
6
|
+
#
|
|
7
|
+
# @api private
|
|
5
8
|
class MaxNumparamStack
|
|
6
9
|
attr_reader :stack
|
|
7
10
|
|
|
11
|
+
ORDINARY_PARAMS = -1
|
|
12
|
+
|
|
8
13
|
def initialize
|
|
9
14
|
@stack = []
|
|
10
15
|
end
|
|
11
16
|
|
|
17
|
+
def empty?
|
|
18
|
+
@stack.size == 0
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
def has_ordinary_params!
|
|
13
|
-
set(
|
|
22
|
+
set(ORDINARY_PARAMS)
|
|
14
23
|
end
|
|
15
24
|
|
|
16
25
|
def has_ordinary_params?
|
|
17
|
-
top
|
|
26
|
+
top == ORDINARY_PARAMS
|
|
18
27
|
end
|
|
19
28
|
|
|
20
29
|
def has_numparams?
|
|
21
|
-
top > 0
|
|
30
|
+
top && top > 0
|
|
22
31
|
end
|
|
23
32
|
|
|
24
33
|
def register(numparam)
|
|
@@ -40,8 +49,7 @@ module Parser
|
|
|
40
49
|
private
|
|
41
50
|
|
|
42
51
|
def set(value)
|
|
43
|
-
@stack.
|
|
44
|
-
@stack.push(value)
|
|
52
|
+
@stack[@stack.length - 1] = value
|
|
45
53
|
end
|
|
46
54
|
end
|
|
47
55
|
|
data/lib/parser/messages.rb
CHANGED
|
@@ -35,6 +35,7 @@ module Parser
|
|
|
35
35
|
# Lexer warnings
|
|
36
36
|
:invalid_escape_use => 'invalid character syntax; use ?%{escape}',
|
|
37
37
|
:ambiguous_literal => 'ambiguous first argument; put parentheses or a space even after the operator',
|
|
38
|
+
:ambiguous_regexp => "ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `/' operator",
|
|
38
39
|
:ambiguous_prefix => "`%{prefix}' interpreted as argument prefix",
|
|
39
40
|
:triple_dot_at_eol => '... at EOL, should be parenthesized',
|
|
40
41
|
|
|
@@ -65,6 +66,7 @@ module Parser
|
|
|
65
66
|
:invalid_return => 'Invalid return in class/module body',
|
|
66
67
|
:csend_in_lhs_of_masgn => '&. inside multiple assignment destination',
|
|
67
68
|
:cant_assign_to_numparam => 'cannot assign to numbered parameter %{name}',
|
|
69
|
+
:reserved_for_numparam => '%{name} is reserved for numbered parameter',
|
|
68
70
|
:ordinary_param_defined => 'ordinary parameter is defined',
|
|
69
71
|
:numparam_used_in_outer_scope => 'numbered parameter is already used in an outer scope',
|
|
70
72
|
:circular_argument_reference => 'circular argument reference %{var_name}',
|
|
@@ -73,6 +75,7 @@ module Parser
|
|
|
73
75
|
:undefined_lvar => "no such local variable: `%{name}'",
|
|
74
76
|
:duplicate_variable_name => 'duplicate variable name %{name}',
|
|
75
77
|
:duplicate_pattern_key => 'duplicate hash pattern key %{name}',
|
|
78
|
+
:endless_setter => 'setter method cannot be defined in an endless method definition',
|
|
76
79
|
|
|
77
80
|
# Parser warnings
|
|
78
81
|
:useless_else => 'else without rescue is useless',
|
data/lib/parser/meta.rb
CHANGED
|
@@ -7,23 +7,23 @@ module Parser
|
|
|
7
7
|
# All node types that parser can produce. Not all parser versions
|
|
8
8
|
# will be able to produce every possible node.
|
|
9
9
|
NODE_TYPES =
|
|
10
|
-
%
|
|
10
|
+
%i(
|
|
11
11
|
true false nil int float str dstr
|
|
12
12
|
sym dsym xstr regopt regexp array splat
|
|
13
13
|
pair kwsplat hash irange erange self
|
|
14
14
|
lvar ivar cvar gvar const defined? lvasgn
|
|
15
|
-
ivasgn cvasgn gvasgn casgn mlhs masgn
|
|
15
|
+
ivasgn cvasgn gvasgn casgn mlhs masgn
|
|
16
16
|
op_asgn and_asgn ensure rescue arg_expr
|
|
17
17
|
or_asgn back_ref nth_ref
|
|
18
18
|
match_with_lvasgn match_current_line
|
|
19
|
-
module class sclass def defs
|
|
19
|
+
module class sclass def defs undef alias args
|
|
20
20
|
cbase arg optarg restarg blockarg block_pass kwarg kwoptarg
|
|
21
21
|
kwrestarg kwnilarg send csend super zsuper yield block
|
|
22
22
|
and not or if when case while until while_post
|
|
23
23
|
until_post for break next redo return resbody
|
|
24
24
|
kwbegin begin retry preexe postexe iflipflop eflipflop
|
|
25
25
|
shadowarg complex rational __FILE__ __LINE__ __ENCODING__
|
|
26
|
-
ident
|
|
26
|
+
ident lambda indexasgn index procarg0
|
|
27
27
|
restarg_expr blockarg_expr
|
|
28
28
|
objc_kwarg objc_restarg objc_varargs
|
|
29
29
|
numargs numblock forward_args forwarded_args forward_arg
|
|
@@ -31,8 +31,9 @@ module Parser
|
|
|
31
31
|
match_var pin match_alt match_as match_rest
|
|
32
32
|
array_pattern match_with_trailing_comma array_pattern_with_tail
|
|
33
33
|
hash_pattern const_pattern if_guard unless_guard match_nil_pattern
|
|
34
|
-
empty_else find_pattern
|
|
35
|
-
|
|
34
|
+
empty_else find_pattern kwargs
|
|
35
|
+
match_pattern_p match_pattern
|
|
36
|
+
).to_set.freeze
|
|
36
37
|
|
|
37
38
|
end # Meta
|
|
38
39
|
end # Parser
|
data/lib/parser/ruby18.rb
CHANGED
|
@@ -2256,7 +2256,7 @@ racc_reduce_table = [
|
|
|
2256
2256
|
5, 156, :_reduce_213,
|
|
2257
2257
|
1, 156, :_reduce_none,
|
|
2258
2258
|
1, 153, :_reduce_none,
|
|
2259
|
-
1, 150, :
|
|
2259
|
+
1, 150, :_reduce_216,
|
|
2260
2260
|
2, 150, :_reduce_217,
|
|
2261
2261
|
2, 150, :_reduce_218,
|
|
2262
2262
|
5, 150, :_reduce_219,
|
|
@@ -3576,7 +3576,7 @@ end
|
|
|
3576
3576
|
# reduce 97 omitted
|
|
3577
3577
|
|
|
3578
3578
|
def _reduce_98(val, _values, result)
|
|
3579
|
-
result = @builder.
|
|
3579
|
+
result = @builder.symbol_internal(val[0])
|
|
3580
3580
|
|
|
3581
3581
|
result
|
|
3582
3582
|
end
|
|
@@ -4024,7 +4024,11 @@ end
|
|
|
4024
4024
|
|
|
4025
4025
|
# reduce 215 omitted
|
|
4026
4026
|
|
|
4027
|
-
|
|
4027
|
+
def _reduce_216(val, _values, result)
|
|
4028
|
+
result = []
|
|
4029
|
+
|
|
4030
|
+
result
|
|
4031
|
+
end
|
|
4028
4032
|
|
|
4029
4033
|
def _reduce_217(val, _values, result)
|
|
4030
4034
|
result = [ val[0] ]
|
data/lib/parser/ruby19.rb
CHANGED
data/lib/parser/ruby20.rb
CHANGED
data/lib/parser/ruby21.rb
CHANGED
data/lib/parser/ruby22.rb
CHANGED
data/lib/parser/ruby23.rb
CHANGED
data/lib/parser/ruby24.rb
CHANGED
data/lib/parser/ruby25.rb
CHANGED