parser 2.7.2.0 → 3.1.1.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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +25 -0
  3. data/lib/parser/all.rb +2 -0
  4. data/lib/parser/ast/processor.rb +3 -0
  5. data/lib/parser/base.rb +1 -0
  6. data/lib/parser/builders/default.rb +225 -27
  7. data/lib/parser/context.rb +22 -37
  8. data/lib/parser/current.rb +28 -10
  9. data/lib/parser/current_arg_stack.rb +5 -2
  10. data/lib/parser/lexer/dedenter.rb +7 -1
  11. data/lib/parser/lexer/explanation.rb +1 -1
  12. data/lib/parser/lexer.rb +12728 -11483
  13. data/lib/parser/macruby.rb +2476 -2448
  14. data/lib/parser/max_numparam_stack.rb +16 -8
  15. data/lib/parser/messages.rb +5 -0
  16. data/lib/parser/meta.rb +2 -1
  17. data/lib/parser/ruby18.rb +2161 -2116
  18. data/lib/parser/ruby19.rb +2458 -2424
  19. data/lib/parser/ruby20.rb +2634 -2598
  20. data/lib/parser/ruby21.rb +2700 -2667
  21. data/lib/parser/ruby22.rb +2533 -2491
  22. data/lib/parser/ruby23.rb +2616 -2571
  23. data/lib/parser/ruby24.rb +2651 -2609
  24. data/lib/parser/ruby25.rb +2545 -2513
  25. data/lib/parser/ruby26.rb +2669 -2624
  26. data/lib/parser/ruby27.rb +3953 -3842
  27. data/lib/parser/ruby30.rb +4089 -4045
  28. data/lib/parser/ruby31.rb +8354 -0
  29. data/lib/parser/ruby32.rb +8330 -0
  30. data/lib/parser/rubymotion.rb +2454 -2415
  31. data/lib/parser/runner.rb +12 -1
  32. data/lib/parser/source/buffer.rb +50 -27
  33. data/lib/parser/source/comment/associator.rb +17 -4
  34. data/lib/parser/source/comment.rb +13 -0
  35. data/lib/parser/source/tree_rewriter.rb +27 -0
  36. data/lib/parser/static_environment.rb +13 -0
  37. data/lib/parser/variables_stack.rb +4 -0
  38. data/lib/parser/version.rb +1 -1
  39. data/parser.gemspec +1 -1
  40. metadata +9 -6
@@ -2,19 +2,28 @@
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?
@@ -26,22 +35,21 @@ module Parser
26
35
  end
27
36
 
28
37
  def top
29
- @stack.last
38
+ @stack.last[:value]
30
39
  end
31
40
 
32
- def push
33
- @stack.push(0)
41
+ def push(static:)
42
+ @stack.push(value: 0, static: static)
34
43
  end
35
44
 
36
45
  def pop
37
- @stack.pop
46
+ @stack.pop[:value]
38
47
  end
39
48
 
40
49
  private
41
50
 
42
51
  def set(value)
43
- @stack.pop
44
- @stack.push(value)
52
+ @stack.last[:value] = 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
 
@@ -75,9 +76,13 @@ module Parser
75
76
  :duplicate_variable_name => 'duplicate variable name %{name}',
76
77
  :duplicate_pattern_key => 'duplicate hash pattern key %{name}',
77
78
  :endless_setter => 'setter method cannot be defined in an endless method definition',
79
+ :invalid_id_to_get => 'identifier %{identifier} is not valid to get',
80
+ :forward_arg_after_restarg => '... after rest argument',
81
+ :no_anonymous_blockarg => 'no anonymous block parameter',
78
82
 
79
83
  # Parser warnings
80
84
  :useless_else => 'else without rescue is useless',
85
+ :duplicate_hash_key => 'key is duplicated and overwritten',
81
86
 
82
87
  # Parser errors that are not Ruby errors
83
88
  :invalid_encoding => 'literal contains escape sequences incompatible with UTF-8',
data/lib/parser/meta.rb CHANGED
@@ -31,7 +31,8 @@ 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
34
+ empty_else find_pattern kwargs
35
+ match_pattern_p match_pattern
35
36
  ).to_set.freeze
36
37
 
37
38
  end # Meta