parser 3.3.0.5 → 3.3.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6522bb3594d6cc37d08b4b3dc827c4796933a368ac8518e9e3aa036795359819
4
- data.tar.gz: 65e8a84d3efef60da0460b2270a3127b8bb92534797a003c29de33a9caa538a7
3
+ metadata.gz: 6b1e8c490a997a2df26e2e03604458f20f94295241ed5b99dfbe45d7f06bac3c
4
+ data.tar.gz: 48a7733a1a6a7ff5ce9db5ae9a3ab11a4ef29e40baa5d0a4fbd9c4f8d97d34aa
5
5
  SHA512:
6
- metadata.gz: 0ff8c442f2d7638629a2cbefae2b0432bec189cb7846c62217da0bc5709559bd93b870af4bf061d4998067955c7649ee531910f7e13a4902ba02a329bbc171b3
7
- data.tar.gz: d97e4af8e9c64bad8aaf4a76d9359a30683f8528de3727522b0bc73c25259a796051c708c1b1489ce7b4dbf336e0835897795364c4db8c0a819c632d32cc48aa
6
+ metadata.gz: 01dbf93e7c6f423aefef85196a0d4a4ea2aa3e7b967761d386326b8d6279d8990864dae261bb642040288e51496b8b9270fbadf2a7794a97d85788e57f7d4cf4
7
+ data.tar.gz: 71c4254b20d51d8df265d65628235d2fe3d13b6105a917449ecb5e00a280f11956412cea0364fe03957a7e5c09f704724b42ecf68c0419a048711cc7b6426c8f
@@ -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.6'
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.2'
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.2.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.2.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-05-30 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.2.0/CHANGELOG.md
255
+ documentation_uri: https://www.rubydoc.info/gems/parser/3.3.2.0
256
+ source_code_uri: https://github.com/whitequark/parser/tree/v3.3.2.0
256
257
  post_install_message:
257
258
  rdoc_options: []
258
259
  require_paths: