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.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/lib/parser/all.rb +1 -1
  3. data/lib/parser/ast/processor.rb +3 -7
  4. data/lib/parser/base.rb +7 -5
  5. data/lib/parser/builders/default.rb +177 -28
  6. data/lib/parser/context.rb +4 -0
  7. data/lib/parser/current.rb +9 -9
  8. data/lib/parser/current_arg_stack.rb +5 -2
  9. data/lib/parser/lexer.rb +813 -803
  10. data/lib/parser/macruby.rb +1 -1
  11. data/lib/parser/max_numparam_stack.rb +13 -5
  12. data/lib/parser/messages.rb +3 -0
  13. data/lib/parser/meta.rb +7 -6
  14. data/lib/parser/ruby18.rb +7 -3
  15. data/lib/parser/ruby19.rb +1 -1
  16. data/lib/parser/ruby20.rb +1 -1
  17. data/lib/parser/ruby21.rb +1 -1
  18. data/lib/parser/ruby22.rb +1 -1
  19. data/lib/parser/ruby23.rb +1 -1
  20. data/lib/parser/ruby24.rb +1 -1
  21. data/lib/parser/ruby25.rb +1 -1
  22. data/lib/parser/ruby26.rb +1 -1
  23. data/lib/parser/ruby27.rb +3720 -3701
  24. data/lib/parser/ruby30.rb +8060 -0
  25. data/lib/parser/rubymotion.rb +1 -1
  26. data/lib/parser/runner.rb +4 -4
  27. data/lib/parser/source/buffer.rb +45 -27
  28. data/lib/parser/source/comment/associator.rb +1 -1
  29. data/lib/parser/source/comment.rb +1 -1
  30. data/lib/parser/source/map/{endless_definition.rb → method_definition.rb} +5 -3
  31. data/lib/parser/source/range.rb +2 -2
  32. data/lib/parser/static_environment.rb +4 -0
  33. data/lib/parser/variables_stack.rb +4 -0
  34. data/lib/parser/version.rb +1 -1
  35. data/lib/parser.rb +1 -1
  36. data/parser.gemspec +1 -17
  37. metadata +8 -97
  38. data/.gitignore +0 -34
  39. data/.travis.yml +0 -40
  40. data/.yardopts +0 -21
  41. data/CHANGELOG.md +0 -1116
  42. data/CONTRIBUTING.md +0 -17
  43. data/Gemfile +0 -10
  44. data/README.md +0 -309
  45. data/Rakefile +0 -167
  46. data/ci/run_rubocop_specs +0 -14
  47. data/doc/AST_FORMAT.md +0 -2283
  48. data/doc/CUSTOMIZATION.md +0 -37
  49. data/doc/INTERNALS.md +0 -21
  50. data/doc/css/.gitkeep +0 -0
  51. data/doc/css/common.css +0 -68
  52. data/lib/parser/lexer.rl +0 -2550
  53. data/lib/parser/macruby.y +0 -2208
  54. data/lib/parser/ruby18.y +0 -1936
  55. data/lib/parser/ruby19.y +0 -2185
  56. data/lib/parser/ruby20.y +0 -2363
  57. data/lib/parser/ruby21.y +0 -2364
  58. data/lib/parser/ruby22.y +0 -2371
  59. data/lib/parser/ruby23.y +0 -2377
  60. data/lib/parser/ruby24.y +0 -2415
  61. data/lib/parser/ruby25.y +0 -2412
  62. data/lib/parser/ruby26.y +0 -2420
  63. data/lib/parser/ruby27.y +0 -2950
  64. data/lib/parser/ruby28.y +0 -3043
  65. data/lib/parser/rubymotion.y +0 -2192
  66. data/test/bug_163/fixtures/input.rb +0 -5
  67. data/test/bug_163/fixtures/output.rb +0 -5
  68. data/test/bug_163/rewriter.rb +0 -20
  69. data/test/helper.rb +0 -103
  70. data/test/parse_helper.rb +0 -323
  71. data/test/racc_coverage_helper.rb +0 -133
  72. data/test/test_ast_processor.rb +0 -32
  73. data/test/test_base.rb +0 -31
  74. data/test/test_current.rb +0 -31
  75. data/test/test_diagnostic.rb +0 -95
  76. data/test/test_diagnostic_engine.rb +0 -59
  77. data/test/test_encoding.rb +0 -99
  78. data/test/test_lexer.rb +0 -3617
  79. data/test/test_lexer_stack_state.rb +0 -78
  80. data/test/test_meta.rb +0 -12
  81. data/test/test_parse_helper.rb +0 -80
  82. data/test/test_parser.rb +0 -9780
  83. data/test/test_runner_parse.rb +0 -56
  84. data/test/test_runner_rewrite.rb +0 -47
  85. data/test/test_source_buffer.rb +0 -165
  86. data/test/test_source_comment.rb +0 -36
  87. data/test/test_source_comment_associator.rb +0 -399
  88. data/test/test_source_map.rb +0 -14
  89. data/test/test_source_range.rb +0 -192
  90. data/test/test_source_rewriter.rb +0 -541
  91. data/test/test_source_rewriter_action.rb +0 -46
  92. data/test/test_source_tree_rewriter.rb +0 -361
  93. data/test/test_static_environment.rb +0 -45
  94. data/test/using_tree_rewriter/fixtures/input.rb +0 -3
  95. data/test/using_tree_rewriter/fixtures/output.rb +0 -3
  96. data/test/using_tree_rewriter/using_tree_rewriter.rb +0 -9
@@ -3759,7 +3759,7 @@ end
3759
3759
  # reduce 110 omitted
3760
3760
 
3761
3761
  def _reduce_111(val, _values, result)
3762
- result = @builder.symbol(val[0])
3762
+ result = @builder.symbol_internal(val[0])
3763
3763
 
3764
3764
  result
3765
3765
  end
@@ -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(-1)
22
+ set(ORDINARY_PARAMS)
14
23
  end
15
24
 
16
25
  def has_ordinary_params?
17
- top < 0
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.pop
44
- @stack.push(value)
52
+ @stack[@stack.length - 1] = value
45
53
  end
46
54
  end
47
55
 
@@ -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
- %w(
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 rasgn mrasgn
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 def_e defs_e undef alias args
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 root lambda indexasgn index procarg0
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
- ).map(&:to_sym).to_set.freeze
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, :_reduce_none,
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.symbol(val[0])
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
- # reduce 216 omitted
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
@@ -3756,7 +3756,7 @@ end
3756
3756
  # reduce 114 omitted
3757
3757
 
3758
3758
  def _reduce_115(val, _values, result)
3759
- result = @builder.symbol(val[0])
3759
+ result = @builder.symbol_internal(val[0])
3760
3760
 
3761
3761
  result
3762
3762
  end
data/lib/parser/ruby20.rb CHANGED
@@ -3967,7 +3967,7 @@ end
3967
3967
  # reduce 116 omitted
3968
3968
 
3969
3969
  def _reduce_117(val, _values, result)
3970
- result = @builder.symbol(val[0])
3970
+ result = @builder.symbol_internal(val[0])
3971
3971
 
3972
3972
  result
3973
3973
  end
data/lib/parser/ruby21.rb CHANGED
@@ -3998,7 +3998,7 @@ end
3998
3998
  # reduce 115 omitted
3999
3999
 
4000
4000
  def _reduce_116(val, _values, result)
4001
- result = @builder.symbol(val[0])
4001
+ result = @builder.symbol_internal(val[0])
4002
4002
 
4003
4003
  result
4004
4004
  end
data/lib/parser/ruby22.rb CHANGED
@@ -4021,7 +4021,7 @@ end
4021
4021
  # reduce 115 omitted
4022
4022
 
4023
4023
  def _reduce_116(val, _values, result)
4024
- result = @builder.symbol(val[0])
4024
+ result = @builder.symbol_internal(val[0])
4025
4025
 
4026
4026
  result
4027
4027
  end
data/lib/parser/ruby23.rb CHANGED
@@ -4024,7 +4024,7 @@ end
4024
4024
  # reduce 115 omitted
4025
4025
 
4026
4026
  def _reduce_116(val, _values, result)
4027
- result = @builder.symbol(val[0])
4027
+ result = @builder.symbol_internal(val[0])
4028
4028
 
4029
4029
  result
4030
4030
  end
data/lib/parser/ruby24.rb CHANGED
@@ -4053,7 +4053,7 @@ end
4053
4053
  # reduce 117 omitted
4054
4054
 
4055
4055
  def _reduce_118(val, _values, result)
4056
- result = @builder.symbol(val[0])
4056
+ result = @builder.symbol_internal(val[0])
4057
4057
 
4058
4058
  result
4059
4059
  end
data/lib/parser/ruby25.rb CHANGED
@@ -4047,7 +4047,7 @@ end
4047
4047
  # reduce 120 omitted
4048
4048
 
4049
4049
  def _reduce_121(val, _values, result)
4050
- result = @builder.symbol(val[0])
4050
+ result = @builder.symbol_internal(val[0])
4051
4051
 
4052
4052
  result
4053
4053
  end
data/lib/parser/ruby26.rb CHANGED
@@ -4049,7 +4049,7 @@ end
4049
4049
  # reduce 120 omitted
4050
4050
 
4051
4051
  def _reduce_121(val, _values, result)
4052
- result = @builder.symbol(val[0])
4052
+ result = @builder.symbol_internal(val[0])
4053
4053
 
4054
4054
  result
4055
4055
  end