parser 2.7.2.0 → 3.1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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