parser 3.3.0.5 → 3.3.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6522bb3594d6cc37d08b4b3dc827c4796933a368ac8518e9e3aa036795359819
4
- data.tar.gz: 65e8a84d3efef60da0460b2270a3127b8bb92534797a003c29de33a9caa538a7
3
+ metadata.gz: fadc62d2357ff23ce227e4cd2b79acc0cc8b211cf71d710c8ec769d57c306312
4
+ data.tar.gz: bebd683ce352ee9c45ac381b36404d82608e212677948e3f4b7ba1dd200ea55b
5
5
  SHA512:
6
- metadata.gz: 0ff8c442f2d7638629a2cbefae2b0432bec189cb7846c62217da0bc5709559bd93b870af4bf061d4998067955c7649ee531910f7e13a4902ba02a329bbc171b3
7
- data.tar.gz: d97e4af8e9c64bad8aaf4a76d9359a30683f8528de3727522b0bc73c25259a796051c708c1b1489ce7b4dbf336e0835897795364c4db8c0a819c632d32cc48aa
6
+ metadata.gz: f60fb041b954bbbfe8afd880852d6830d2f35661616775722403ee49f2c401652cdc4a5b40ef48a8a1042366b294e735feb88f83caeea77c99d6cfe21ead0113
7
+ data.tar.gz: 647a8d222feea01524e02e03fa52a68aebad6bbce937251f067f34bd2b16da30b2b17f417eb9ab966792b739a666890316dcb760aae3a28a1417c2f8fc67b09a
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'gauntlet'
4
- require 'parser/all'
4
+ require_relative 'parser/all'
5
5
  require 'shellwords'
6
6
 
7
7
  class ParserGauntlet < Gauntlet
data/lib/parser/all.rb CHANGED
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parser/ruby18'
4
- require 'parser/ruby19'
5
- require 'parser/ruby20'
6
- require 'parser/ruby21'
7
- require 'parser/ruby22'
8
- require 'parser/ruby23'
9
- require 'parser/ruby24'
10
- require 'parser/ruby25'
11
- require 'parser/ruby26'
12
- require 'parser/ruby27'
13
- require 'parser/ruby30'
14
- require 'parser/ruby31'
15
- require 'parser/ruby32'
16
- require 'parser/ruby33'
17
- require 'parser/ruby34'
3
+ require_relative 'ruby18'
4
+ require_relative 'ruby19'
5
+ require_relative 'ruby20'
6
+ require_relative 'ruby21'
7
+ require_relative 'ruby22'
8
+ require_relative 'ruby23'
9
+ require_relative 'ruby24'
10
+ require_relative 'ruby25'
11
+ require_relative 'ruby26'
12
+ require_relative 'ruby27'
13
+ require_relative 'ruby30'
14
+ require_relative 'ruby31'
15
+ require_relative 'ruby32'
16
+ require_relative 'ruby33'
17
+ require_relative 'ruby34'
@@ -6,7 +6,9 @@ module Parser
6
6
  ##
7
7
  # @api public
8
8
  #
9
- class Processor < ::AST::Processor
9
+ class Processor
10
+ include ::AST::Processor::Mixin
11
+
10
12
  def process_regular_node(node)
11
13
  node.updated(nil, process_all(node))
12
14
  end
@@ -17,7 +17,7 @@ module Parser
17
17
  warn_syntax_deviation 'parser/ruby20', current_version
18
18
  end
19
19
 
20
- require 'parser/ruby20'
20
+ require_relative 'ruby20'
21
21
  CurrentRuby = Ruby20
22
22
 
23
23
  when /^2\.1\./
@@ -26,7 +26,7 @@ module Parser
26
26
  warn_syntax_deviation 'parser/ruby21', current_version
27
27
  end
28
28
 
29
- require 'parser/ruby21'
29
+ require_relative 'ruby21'
30
30
  CurrentRuby = Ruby21
31
31
 
32
32
  when /^2\.2\./
@@ -35,7 +35,7 @@ module Parser
35
35
  warn_syntax_deviation 'parser/ruby22', current_version
36
36
  end
37
37
 
38
- require 'parser/ruby22'
38
+ require_relative 'ruby22'
39
39
  CurrentRuby = Ruby22
40
40
 
41
41
  when /^2\.3\./
@@ -44,7 +44,7 @@ module Parser
44
44
  warn_syntax_deviation 'parser/ruby23', current_version
45
45
  end
46
46
 
47
- require 'parser/ruby23'
47
+ require_relative 'ruby23'
48
48
  CurrentRuby = Ruby23
49
49
 
50
50
  when /^2\.4\./
@@ -53,7 +53,7 @@ module Parser
53
53
  warn_syntax_deviation 'parser/ruby24', current_version
54
54
  end
55
55
 
56
- require 'parser/ruby24'
56
+ require_relative 'ruby24'
57
57
  CurrentRuby = Ruby24
58
58
 
59
59
  when /^2\.5\./
@@ -62,7 +62,7 @@ module Parser
62
62
  warn_syntax_deviation 'parser/ruby25', current_version
63
63
  end
64
64
 
65
- require 'parser/ruby25'
65
+ require_relative 'ruby25'
66
66
  CurrentRuby = Ruby25
67
67
 
68
68
  when /^2\.6\./
@@ -71,7 +71,7 @@ module Parser
71
71
  warn_syntax_deviation 'parser/ruby26', current_version
72
72
  end
73
73
 
74
- require 'parser/ruby26'
74
+ require_relative 'ruby26'
75
75
  CurrentRuby = Ruby26
76
76
 
77
77
  when /^2\.7\./
@@ -80,43 +80,43 @@ module Parser
80
80
  warn_syntax_deviation 'parser/ruby27', current_version
81
81
  end
82
82
 
83
- require 'parser/ruby27'
83
+ require_relative 'ruby27'
84
84
  CurrentRuby = Ruby27
85
85
 
86
86
  when /^3\.0\./
87
- current_version = '3.0.6'
87
+ current_version = '3.0.7'
88
88
  if RUBY_VERSION != current_version
89
89
  warn_syntax_deviation 'parser/ruby30', current_version
90
90
  end
91
91
 
92
- require 'parser/ruby30'
92
+ require_relative 'ruby30'
93
93
  CurrentRuby = Ruby30
94
94
 
95
95
  when /^3\.1\./
96
- current_version = '3.1.4'
96
+ current_version = '3.1.5'
97
97
  if RUBY_VERSION != current_version
98
98
  warn_syntax_deviation 'parser/ruby31', current_version
99
99
  end
100
100
 
101
- require 'parser/ruby31'
101
+ require_relative 'ruby31'
102
102
  CurrentRuby = Ruby31
103
103
 
104
104
  when /^3\.2\./
105
- current_version = '3.2.3'
105
+ current_version = '3.2.4'
106
106
  if RUBY_VERSION != current_version
107
107
  warn_syntax_deviation 'parser/ruby32', current_version
108
108
  end
109
109
 
110
- require 'parser/ruby32'
110
+ require_relative 'ruby32'
111
111
  CurrentRuby = Ruby32
112
112
 
113
113
  when /^3\.3\./
114
- current_version = '3.3.0'
114
+ current_version = '3.3.1'
115
115
  if RUBY_VERSION != current_version
116
116
  warn_syntax_deviation 'parser/ruby33', current_version
117
117
  end
118
118
 
119
- require 'parser/ruby33'
119
+ require_relative 'ruby33'
120
120
  CurrentRuby = Ruby33
121
121
 
122
122
  when /^3\.4\./
@@ -125,13 +125,13 @@ module Parser
125
125
  warn_syntax_deviation 'parser/ruby34', current_version
126
126
  end
127
127
 
128
- require 'parser/ruby34'
128
+ require_relative 'ruby34'
129
129
  CurrentRuby = Ruby34
130
130
 
131
131
  else # :nocov:
132
132
  # Keep this in sync with released Ruby.
133
133
  warn_syntax_deviation 'parser/ruby33', '3.3.x'
134
- require 'parser/ruby33'
134
+ require_relative 'ruby33'
135
135
  CurrentRuby = Ruby33
136
136
  end
137
137
  end
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class MacRuby < Parser::Base
data/lib/parser/ruby18.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby18 < Parser::Base
data/lib/parser/ruby19.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby19 < Parser::Base
data/lib/parser/ruby20.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby20 < Parser::Base
data/lib/parser/ruby21.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby21 < Parser::Base
data/lib/parser/ruby22.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby22 < Parser::Base
data/lib/parser/ruby23.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby23 < Parser::Base
data/lib/parser/ruby24.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby24 < Parser::Base
data/lib/parser/ruby25.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby25 < Parser::Base
data/lib/parser/ruby26.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby26 < Parser::Base
data/lib/parser/ruby27.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby27 < Parser::Base
data/lib/parser/ruby30.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby30 < Parser::Base
data/lib/parser/ruby31.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby31 < Parser::Base
data/lib/parser/ruby32.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby32 < Parser::Base
data/lib/parser/ruby33.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby33 < Parser::Base
@@ -9905,7 +9905,7 @@ def _reduce_291(val, _values, result)
9905
9905
  end
9906
9906
 
9907
9907
  if @context.in_dynamic_block? && context.in_def &&
9908
- @static_env.declared_anonymous_blockarg? && @static_env.parent_has_anonymous_blockarg?
9908
+ @static_env.declared_anonymous_blockarg_in_current_scpe? && @static_env.parent_has_anonymous_blockarg?
9909
9909
  diagnostic :error, :ambiguous_anonymous_blockarg, nil, val[0]
9910
9910
  end
9911
9911
 
@@ -9958,7 +9958,7 @@ def _reduce_299(val, _values, result)
9958
9958
  end
9959
9959
 
9960
9960
  if @context.in_dynamic_block? && context.in_def &&
9961
- @static_env.declared_anonymous_restarg? && @static_env.parent_has_anonymous_restarg?
9961
+ @static_env.declared_anonymous_restarg_in_current_scope? && @static_env.parent_has_anonymous_restarg?
9962
9962
  diagnostic :error, :ambiguous_anonymous_restarg, nil, val[0]
9963
9963
  end
9964
9964
 
@@ -10977,7 +10977,7 @@ end
10977
10977
 
10978
10978
  def _reduce_457(val, _values, result)
10979
10979
  result = @context.in_kwarg
10980
-
10980
+
10981
10981
  @lexer.state = :expr_beg
10982
10982
  @lexer.command_start = false
10983
10983
  @context.in_kwarg = true
@@ -12492,7 +12492,7 @@ def _reduce_715(val, _values, result)
12492
12492
  end
12493
12493
 
12494
12494
  if @context.in_dynamic_block? && context.in_def &&
12495
- @static_env.declared_anonymous_kwrestarg? && @static_env.parent_has_anonymous_kwrestarg?
12495
+ @static_env.declared_anonymous_kwrestarg_in_current_scope? && @static_env.parent_has_anonymous_kwrestarg?
12496
12496
  diagnostic :error, :ambiguous_anonymous_kwrestarg, nil, val[0]
12497
12497
  end
12498
12498
 
data/lib/parser/ruby34.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class Ruby34 < Parser::Base
@@ -9905,7 +9905,7 @@ def _reduce_291(val, _values, result)
9905
9905
  end
9906
9906
 
9907
9907
  if @context.in_dynamic_block? && context.in_def &&
9908
- @static_env.declared_anonymous_blockarg? && @static_env.parent_has_anonymous_blockarg?
9908
+ @static_env.declared_anonymous_blockarg_in_current_scpe? && @static_env.parent_has_anonymous_blockarg?
9909
9909
  diagnostic :error, :ambiguous_anonymous_blockarg, nil, val[0]
9910
9910
  end
9911
9911
 
@@ -9958,7 +9958,7 @@ def _reduce_299(val, _values, result)
9958
9958
  end
9959
9959
 
9960
9960
  if @context.in_dynamic_block? && context.in_def &&
9961
- @static_env.declared_anonymous_restarg? && @static_env.parent_has_anonymous_restarg?
9961
+ @static_env.declared_anonymous_restarg_in_current_scope? && @static_env.parent_has_anonymous_restarg?
9962
9962
  diagnostic :error, :ambiguous_anonymous_restarg, nil, val[0]
9963
9963
  end
9964
9964
 
@@ -12492,7 +12492,7 @@ def _reduce_715(val, _values, result)
12492
12492
  end
12493
12493
 
12494
12494
  if @context.in_dynamic_block? && context.in_def &&
12495
- @static_env.declared_anonymous_kwrestarg? && @static_env.parent_has_anonymous_kwrestarg?
12495
+ @static_env.declared_anonymous_kwrestarg_in_current_scope? && @static_env.parent_has_anonymous_kwrestarg?
12496
12496
  diagnostic :error, :ambiguous_anonymous_kwrestarg, nil, val[0]
12497
12497
  end
12498
12498
 
@@ -8,7 +8,7 @@
8
8
  require 'racc/parser.rb'
9
9
 
10
10
 
11
- require 'parser'
11
+ require_relative '../parser'
12
12
 
13
13
  module Parser
14
14
  class RubyMotion < Parser::Base
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parser/runner'
4
- require 'parser/color'
5
- require 'parser/lexer/explanation'
3
+ require_relative '../runner'
4
+ require_relative '../color'
5
+ require_relative '../lexer/explanation'
6
6
  require 'json'
7
7
 
8
8
  module Parser
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'parser/runner'
3
+ require_relative '../runner'
4
4
  require 'tempfile'
5
5
 
6
6
  module Parser
data/lib/parser/runner.rb CHANGED
@@ -4,7 +4,7 @@ require 'benchmark'
4
4
  require 'find'
5
5
  require 'optparse'
6
6
 
7
- require 'parser'
7
+ require_relative '../parser'
8
8
 
9
9
  module Parser
10
10
 
@@ -64,87 +64,87 @@ module Parser
64
64
  end
65
65
 
66
66
  opts.on '--18', 'Parse as Ruby 1.8.7 would' do
67
- require 'parser/ruby18'
67
+ require_relative 'ruby18'
68
68
  @parser_class = Parser::Ruby18
69
69
  end
70
70
 
71
71
  opts.on '--19', 'Parse as Ruby 1.9.3 would' do
72
- require 'parser/ruby19'
72
+ require_relative 'ruby19'
73
73
  @parser_class = Parser::Ruby19
74
74
  end
75
75
 
76
76
  opts.on '--20', 'Parse as Ruby 2.0 would' do
77
- require 'parser/ruby20'
77
+ require_relative 'ruby20'
78
78
  @parser_class = Parser::Ruby20
79
79
  end
80
80
 
81
81
  opts.on '--21', 'Parse as Ruby 2.1 would' do
82
- require 'parser/ruby21'
82
+ require_relative 'ruby21'
83
83
  @parser_class = Parser::Ruby21
84
84
  end
85
85
 
86
86
  opts.on '--22', 'Parse as Ruby 2.2 would' do
87
- require 'parser/ruby22'
87
+ require_relative 'ruby22'
88
88
  @parser_class = Parser::Ruby22
89
89
  end
90
90
 
91
91
  opts.on '--23', 'Parse as Ruby 2.3 would' do
92
- require 'parser/ruby23'
92
+ require_relative 'ruby23'
93
93
  @parser_class = Parser::Ruby23
94
94
  end
95
95
 
96
96
  opts.on '--24', 'Parse as Ruby 2.4 would' do
97
- require 'parser/ruby24'
97
+ require_relative 'ruby24'
98
98
  @parser_class = Parser::Ruby24
99
99
  end
100
100
 
101
101
  opts.on '--25', 'Parse as Ruby 2.5 would' do
102
- require 'parser/ruby25'
102
+ require_relative 'ruby25'
103
103
  @parser_class = Parser::Ruby25
104
104
  end
105
105
 
106
106
  opts.on '--26', 'Parse as Ruby 2.6 would' do
107
- require 'parser/ruby26'
107
+ require_relative 'ruby26'
108
108
  @parser_class = Parser::Ruby26
109
109
  end
110
110
 
111
111
  opts.on '--27', 'Parse as Ruby 2.7 would' do
112
- require 'parser/ruby27'
112
+ require_relative 'ruby27'
113
113
  @parser_class = Parser::Ruby27
114
114
  end
115
115
 
116
116
  opts.on '--30', 'Parse as Ruby 3.0 would' do
117
- require 'parser/ruby30'
117
+ require_relative 'ruby30'
118
118
  @parser_class = Parser::Ruby30
119
119
  end
120
120
 
121
121
  opts.on '--31', 'Parse as Ruby 3.1 would' do
122
- require 'parser/ruby31'
122
+ require_relative 'ruby31'
123
123
  @parser_class = Parser::Ruby31
124
124
  end
125
125
 
126
126
  opts.on '--32', 'Parse as Ruby 3.2 would' do
127
- require 'parser/ruby32'
127
+ require_relative 'ruby32'
128
128
  @parser_class = Parser::Ruby32
129
129
  end
130
130
 
131
131
  opts.on '--33', 'Parse as Ruby 3.3 would' do
132
- require 'parser/ruby33'
132
+ require_relative 'ruby33'
133
133
  @parser_class = Parser::Ruby33
134
134
  end
135
135
 
136
136
  opts.on '--34', 'Parse as Ruby 3.4 would' do
137
- require 'parser/ruby34'
137
+ require_relative 'ruby34'
138
138
  @parser_class = Parser::Ruby34
139
139
  end
140
140
 
141
141
  opts.on '--mac', 'Parse as MacRuby 0.12 would' do
142
- require 'parser/macruby'
142
+ require_relative 'macruby'
143
143
  @parser_class = Parser::MacRuby
144
144
  end
145
145
 
146
146
  opts.on '--ios', 'Parse as mid-2015 RubyMotion would' do
147
- require 'parser/rubymotion'
147
+ require_relative 'rubymotion'
148
148
  @parser_class = Parser::RubyMotion
149
149
  end
150
150
 
@@ -193,7 +193,7 @@ module Parser
193
193
  end
194
194
 
195
195
  if @parser_class.nil?
196
- require 'parser/current'
196
+ require_relative 'current'
197
197
  @parser_class = Parser::CurrentRuby
198
198
  end
199
199
  end
@@ -46,6 +46,7 @@ module Parser
46
46
  # magic encoding comment or UTF-8 BOM. `string` can be in any encoding.
47
47
  #
48
48
  # @param [String] string
49
+ # @raise [Parser::UnknownEncodingInMagicComment] if the encoding is not recognized
49
50
  # @return [String, nil] encoding name, if recognized
50
51
  #
51
52
  def self.recognize_encoding(string)
@@ -66,7 +67,11 @@ module Parser
66
67
  return nil if encoding_line.nil? || encoding_line[0] != '#'
67
68
 
68
69
  if (result = ENCODING_RE.match(encoding_line))
69
- Encoding.find(result[3] || result[4] || result[6])
70
+ begin
71
+ Encoding.find(result[3] || result[4] || result[6])
72
+ rescue ArgumentError => e
73
+ raise Parser::UnknownEncodingInMagicComment, e.message
74
+ end
70
75
  else
71
76
  nil
72
77
  end
@@ -6,9 +6,10 @@ module Parser
6
6
  # @api private
7
7
  #
8
8
  # Actions are arranged in a tree and get combined so that:
9
- # children are strictly contained by their parent
10
- # sibblings all disjoint from one another and ordered
11
- # only actions with replacement==nil may have children
9
+ #
10
+ # * Children are strictly contained by their parent
11
+ # * Siblings are all disjointed from one another and ordered
12
+ # * Only actions with `replacement == nil` may have children
12
13
  #
13
14
  class TreeRewriter::Action
14
15
  attr_reader :range, :replacement, :insert_before, :insert_after
@@ -60,7 +61,7 @@ module Parser
60
61
 
61
62
  ##
62
63
  # A root action has its range set to the whole source range, even
63
- # though it typically do not act on that range.
64
+ # though it typically does not act on that range.
64
65
  # This method returns the action as if it was a child action with
65
66
  # its range contracted.
66
67
  # @return [Action]
@@ -4,9 +4,15 @@ module Parser
4
4
 
5
5
  class StaticEnvironment
6
6
  FORWARD_ARGS = :FORWARD_ARGS
7
- ANONYMOUS_BLOCKARG = :ANONYMOUS_BLOCKARG
8
- ANONYMOUS_RESTARG = :ANONYMOUS_RESTARG
9
- ANONYMOUS_KWRESTARG = :ANONYMOUS_KWRESTARG
7
+
8
+ ANONYMOUS_RESTARG_IN_CURRENT_SCOPE = :ANONYMOUS_RESTARG_IN_CURRENT_SCOPE
9
+ ANONYMOUS_RESTARG_INHERITED = :ANONYMOUS_RESTARG_INHERITED
10
+
11
+ ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE = :ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE
12
+ ANONYMOUS_KWRESTARG_INHERITED = :ANONYMOUS_KWRESTARG_INHERITED
13
+
14
+ ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE = :ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE
15
+ ANONYMOUS_BLOCKARG_INHERITED = :ANONYMOUS_BLOCKARG_INHERITED
10
16
 
11
17
  def initialize
12
18
  reset
@@ -27,6 +33,15 @@ module Parser
27
33
  def extend_dynamic
28
34
  @stack.push(@variables)
29
35
  @variables = @variables.dup
36
+ if @variables.delete(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
37
+ @variables.add(ANONYMOUS_BLOCKARG_INHERITED)
38
+ end
39
+ if @variables.delete(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
40
+ @variables.add(ANONYMOUS_RESTARG_INHERITED)
41
+ end
42
+ if @variables.delete(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
43
+ @variables.add(ANONYMOUS_KWRESTARG_INHERITED)
44
+ end
30
45
 
31
46
  self
32
47
  end
@@ -47,6 +62,8 @@ module Parser
47
62
  @variables.include?(name.to_sym)
48
63
  end
49
64
 
65
+ # Forward args
66
+
50
67
  def declare_forward_args
51
68
  declare(FORWARD_ARGS)
52
69
  end
@@ -55,40 +72,58 @@ module Parser
55
72
  declared?(FORWARD_ARGS)
56
73
  end
57
74
 
75
+ # Anonymous blockarg
76
+
58
77
  def declare_anonymous_blockarg
59
- declare(ANONYMOUS_BLOCKARG)
78
+ declare(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
60
79
  end
61
80
 
62
81
  def declared_anonymous_blockarg?
63
- declared?(ANONYMOUS_BLOCKARG)
82
+ declared?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_BLOCKARG_INHERITED)
83
+ end
84
+
85
+ def declared_anonymous_blockarg_in_current_scpe?
86
+ declared?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE)
64
87
  end
65
88
 
66
89
  def parent_has_anonymous_blockarg?
67
- @stack.any? { |variables| variables.include?(ANONYMOUS_BLOCKARG) }
90
+ @stack.any? { |variables| variables.include?(ANONYMOUS_BLOCKARG_IN_CURRENT_SCOPE) }
68
91
  end
69
92
 
93
+ # Anonymous restarg
94
+
70
95
  def declare_anonymous_restarg
71
- declare(ANONYMOUS_RESTARG)
96
+ declare(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
72
97
  end
73
98
 
74
99
  def declared_anonymous_restarg?
75
- declared?(ANONYMOUS_RESTARG)
100
+ declared?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_RESTARG_INHERITED)
101
+ end
102
+
103
+ def declared_anonymous_restarg_in_current_scope?
104
+ declared?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE)
76
105
  end
77
106
 
78
107
  def parent_has_anonymous_restarg?
79
- @stack.any? { |variables| variables.include?(ANONYMOUS_RESTARG) }
108
+ @stack.any? { |variables| variables.include?(ANONYMOUS_RESTARG_IN_CURRENT_SCOPE) }
80
109
  end
81
110
 
111
+ # Anonymous kwresarg
112
+
82
113
  def declare_anonymous_kwrestarg
83
- declare(ANONYMOUS_KWRESTARG)
114
+ declare(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
84
115
  end
85
116
 
86
117
  def declared_anonymous_kwrestarg?
87
- declared?(ANONYMOUS_KWRESTARG)
118
+ declared?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE) || declared?(ANONYMOUS_KWRESTARG_INHERITED)
119
+ end
120
+
121
+ def declared_anonymous_kwrestarg_in_current_scope?
122
+ declared?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE)
88
123
  end
89
124
 
90
125
  def parent_has_anonymous_kwrestarg?
91
- @stack.any? { |variables| variables.include?(ANONYMOUS_KWRESTARG) }
126
+ @stack.any? { |variables| variables.include?(ANONYMOUS_KWRESTARG_IN_CURRENT_SCOPE) }
92
127
  end
93
128
 
94
129
  def empty?
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Parser
4
+ ##
5
+ # {Parser::UnknownEncodingInMagicComment} is raised when a magic encoding
6
+ # comment is encountered that the currently running Ruby version doesn't
7
+ # recognize. It inherits from {ArgumentError} since that is the exception
8
+ # Ruby itself raises when trying to execute a file with an unknown encoding.
9
+ # As such, it is also not a {Parser::SyntaxError}.
10
+ #
11
+ # @api public
12
+ #
13
+ class UnknownEncodingInMagicComment < ArgumentError
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Parser
4
- VERSION = '3.3.0.5'
4
+ VERSION = '3.3.1.0'
5
5
  end
data/lib/parser.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  if RUBY_VERSION =~ /^1\.[89]\./
4
- require 'parser/version'
4
+ require_relative 'parser/version'
5
5
  raise LoadError, <<-UNSUPPORTED_VERSION_MSG
6
6
  parser v#{Parser::VERSION} cannot run on Ruby #{RUBY_VERSION}.
7
7
  Please upgrade to Ruby 2.0.0 or higher, or use an older version of the parser gem.
@@ -17,74 +17,75 @@ require 'ast'
17
17
  # @api public
18
18
  #
19
19
  module Parser
20
- require 'parser/version'
21
- require 'parser/messages'
22
- require 'parser/deprecation'
20
+ require_relative 'parser/version'
21
+ require_relative 'parser/messages'
22
+ require_relative 'parser/deprecation'
23
23
 
24
24
  module AST
25
- require 'parser/ast/node'
26
- require 'parser/ast/processor'
27
- require 'parser/meta'
25
+ require_relative 'parser/ast/node'
26
+ require_relative 'parser/ast/processor'
27
+ require_relative 'parser/meta'
28
28
  end
29
29
 
30
30
  module Source
31
- require 'parser/source/buffer'
32
- require 'parser/source/range'
33
-
34
- require 'parser/source/comment'
35
- require 'parser/source/comment/associator'
36
-
37
- require 'parser/source/rewriter'
38
- require 'parser/source/rewriter/action'
39
- require 'parser/source/tree_rewriter'
40
- require 'parser/source/tree_rewriter/action'
41
-
42
- require 'parser/source/map'
43
- require 'parser/source/map/operator'
44
- require 'parser/source/map/collection'
45
- require 'parser/source/map/constant'
46
- require 'parser/source/map/variable'
47
- require 'parser/source/map/keyword'
48
- require 'parser/source/map/definition'
49
- require 'parser/source/map/method_definition'
50
- require 'parser/source/map/send'
51
- require 'parser/source/map/index'
52
- require 'parser/source/map/condition'
53
- require 'parser/source/map/ternary'
54
- require 'parser/source/map/for'
55
- require 'parser/source/map/rescue_body'
56
- require 'parser/source/map/heredoc'
57
- require 'parser/source/map/objc_kwarg'
31
+ require_relative 'parser/source/buffer'
32
+ require_relative 'parser/source/range'
33
+
34
+ require_relative 'parser/source/comment'
35
+ require_relative 'parser/source/comment/associator'
36
+
37
+ require_relative 'parser/source/rewriter'
38
+ require_relative 'parser/source/rewriter/action'
39
+ require_relative 'parser/source/tree_rewriter'
40
+ require_relative 'parser/source/tree_rewriter/action'
41
+
42
+ require_relative 'parser/source/map'
43
+ require_relative 'parser/source/map/operator'
44
+ require_relative 'parser/source/map/collection'
45
+ require_relative 'parser/source/map/constant'
46
+ require_relative 'parser/source/map/variable'
47
+ require_relative 'parser/source/map/keyword'
48
+ require_relative 'parser/source/map/definition'
49
+ require_relative 'parser/source/map/method_definition'
50
+ require_relative 'parser/source/map/send'
51
+ require_relative 'parser/source/map/index'
52
+ require_relative 'parser/source/map/condition'
53
+ require_relative 'parser/source/map/ternary'
54
+ require_relative 'parser/source/map/for'
55
+ require_relative 'parser/source/map/rescue_body'
56
+ require_relative 'parser/source/map/heredoc'
57
+ require_relative 'parser/source/map/objc_kwarg'
58
58
  end
59
59
 
60
- require 'parser/syntax_error'
61
- require 'parser/clobbering_error'
62
- require 'parser/diagnostic'
63
- require 'parser/diagnostic/engine'
60
+ require_relative 'parser/syntax_error'
61
+ require_relative 'parser/clobbering_error'
62
+ require_relative 'parser/unknown_encoding_in_magic_comment_error'
63
+ require_relative 'parser/diagnostic'
64
+ require_relative 'parser/diagnostic/engine'
64
65
 
65
- require 'parser/static_environment'
66
+ require_relative 'parser/static_environment'
66
67
 
67
68
  if RUBY_ENGINE == 'truffleruby'
68
- require 'parser/lexer-F0'
69
+ require_relative 'parser/lexer-F0'
69
70
  else
70
- require 'parser/lexer-F1'
71
+ require_relative 'parser/lexer-F1'
71
72
  end
72
- require 'parser/lexer-strings'
73
- require 'parser/lexer/literal'
74
- require 'parser/lexer/stack_state'
75
- require 'parser/lexer/dedenter'
73
+ require_relative 'parser/lexer-strings'
74
+ require_relative 'parser/lexer/literal'
75
+ require_relative 'parser/lexer/stack_state'
76
+ require_relative 'parser/lexer/dedenter'
76
77
 
77
78
  module Builders
78
- require 'parser/builders/default'
79
+ require_relative 'parser/builders/default'
79
80
  end
80
81
 
81
- require 'parser/context'
82
- require 'parser/max_numparam_stack'
83
- require 'parser/current_arg_stack'
84
- require 'parser/variables_stack'
82
+ require_relative 'parser/context'
83
+ require_relative 'parser/max_numparam_stack'
84
+ require_relative 'parser/current_arg_stack'
85
+ require_relative 'parser/variables_stack'
85
86
 
86
- require 'parser/base'
87
+ require_relative 'parser/base'
87
88
 
88
- require 'parser/rewriter'
89
- require 'parser/tree_rewriter'
89
+ require_relative 'parser/rewriter'
90
+ require_relative 'parser/tree_rewriter'
90
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0.5
4
+ version: 3.3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - whitequark
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-21 00:00:00.000000000 Z
11
+ date: 2024-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ast
@@ -242,6 +242,7 @@ files:
242
242
  - lib/parser/static_environment.rb
243
243
  - lib/parser/syntax_error.rb
244
244
  - lib/parser/tree_rewriter.rb
245
+ - lib/parser/unknown_encoding_in_magic_comment_error.rb
245
246
  - lib/parser/variables_stack.rb
246
247
  - lib/parser/version.rb
247
248
  - parser.gemspec
@@ -250,9 +251,9 @@ licenses:
250
251
  - MIT
251
252
  metadata:
252
253
  bug_tracker_uri: https://github.com/whitequark/parser/issues
253
- changelog_uri: https://github.com/whitequark/parser/blob/v3.3.0.5/CHANGELOG.md
254
- documentation_uri: https://www.rubydoc.info/gems/parser/3.3.0.5
255
- source_code_uri: https://github.com/whitequark/parser/tree/v3.3.0.5
254
+ changelog_uri: https://github.com/whitequark/parser/blob/v3.3.1.0/CHANGELOG.md
255
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.3.1.0
256
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.3.1.0
256
257
  post_install_message:
257
258
  rdoc_options: []
258
259
  require_paths: