rubocop-ast 1.30.0 → 1.31.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 +4 -4
- data/lib/rubocop/ast/node.rb +2 -2
- data/lib/rubocop/ast/node_pattern/lexer.rex.rb +1 -2
- data/lib/rubocop/ast/node_pattern/parser.racc.rb +2 -2
- data/lib/rubocop/ast/processed_source.rb +81 -53
- data/lib/rubocop/ast/token.rb +1 -1
- data/lib/rubocop/ast/traversal.rb +1 -1
- data/lib/rubocop/ast/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e155ad03b7e113e566024f6e7618bd143831a7bcf238aa5d263eccd66d511bf1
|
4
|
+
data.tar.gz: ab734ac50a5888e3623b87f79824c489fe2406ae60e885092a000ecdabd52438
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a939ed43023a1cd7b408331f54d33c2ce03e3adbb6f43ee4ef1916da3455a5372c2d1560a4d88f30e64d37255656d93cfaf6d6ba08617b247e6af4c8d9a9c0d8
|
7
|
+
data.tar.gz: 697372a43782fb445340e3738ae88fd68710e85fb8dd75d8a7045056073750842339397435beb0a84a006315df99bba002bee438bc5074450b1eecf368c91eee
|
data/lib/rubocop/ast/node.rb
CHANGED
@@ -326,13 +326,13 @@ module RuboCop
|
|
326
326
|
# what class or module is this method/constant/etc definition in?
|
327
327
|
# returns nil if answer cannot be determined
|
328
328
|
ancestors = each_ancestor(:class, :module, :sclass, :casgn, :block)
|
329
|
-
result = ancestors.
|
329
|
+
result = ancestors.filter_map do |ancestor|
|
330
330
|
parent_module_name_part(ancestor) do |full_name|
|
331
331
|
return nil unless full_name
|
332
332
|
|
333
333
|
full_name
|
334
334
|
end
|
335
|
-
end.
|
335
|
+
end.reverse.join('::')
|
336
336
|
result.empty? ? 'Object' : result
|
337
337
|
end
|
338
338
|
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# encoding: UTF-8
|
3
3
|
#--
|
4
4
|
# This file is automatically generated. Do not modify it.
|
5
|
-
# Generated by: oedipus_lex version 2.6.
|
5
|
+
# Generated by: oedipus_lex version 2.6.2.
|
6
6
|
# Source: lib/rubocop/ast/node_pattern/lexer.rex
|
7
7
|
#++
|
8
8
|
|
@@ -70,7 +70,6 @@ class RuboCop::AST::NodePattern::LexerRex
|
|
70
70
|
yield
|
71
71
|
end
|
72
72
|
|
73
|
-
|
74
73
|
##
|
75
74
|
# The current scanner class. Must be overridden in subclasses.
|
76
75
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# DO NOT MODIFY!!!!
|
4
|
-
# This file is automatically generated by Racc 1.7.
|
5
|
-
# from Racc grammar file "".
|
4
|
+
# This file is automatically generated by Racc 1.7.3
|
5
|
+
# from Racc grammar file "parser.y".
|
6
6
|
#
|
7
7
|
|
8
8
|
require 'racc/parser.rb'
|
@@ -15,15 +15,23 @@ module RuboCop
|
|
15
15
|
INVALID_LEVELS = %i[error fatal].freeze
|
16
16
|
private_constant :INVALID_LEVELS
|
17
17
|
|
18
|
+
PARSER_ENGINES = %i[parser_whitequark parser_prism].freeze
|
19
|
+
private_constant :PARSER_ENGINES
|
20
|
+
|
18
21
|
attr_reader :path, :buffer, :ast, :comments, :tokens, :diagnostics,
|
19
|
-
:parser_error, :raw_source, :ruby_version
|
22
|
+
:parser_error, :raw_source, :ruby_version, :parser_engine
|
20
23
|
|
21
|
-
def self.from_file(path, ruby_version)
|
24
|
+
def self.from_file(path, ruby_version, parser_engine: :parser_whitequark)
|
22
25
|
file = File.read(path, mode: 'rb')
|
23
|
-
new(file, ruby_version, path)
|
26
|
+
new(file, ruby_version, path, parser_engine: parser_engine)
|
24
27
|
end
|
25
28
|
|
26
|
-
def initialize(source, ruby_version, path = nil)
|
29
|
+
def initialize(source, ruby_version, path = nil, parser_engine: :parser_whitequark)
|
30
|
+
unless PARSER_ENGINES.include?(parser_engine)
|
31
|
+
raise ArgumentError, 'The keyword argument `parser_engine` accepts ' \
|
32
|
+
"`parser` or `parser_prism`, but `#{parser_engine}` was passed."
|
33
|
+
end
|
34
|
+
|
27
35
|
# Defaults source encoding to UTF-8, regardless of the encoding it has
|
28
36
|
# been read with, which could be non-utf8 depending on the default
|
29
37
|
# external encoding.
|
@@ -33,9 +41,10 @@ module RuboCop
|
|
33
41
|
@path = path
|
34
42
|
@diagnostics = []
|
35
43
|
@ruby_version = ruby_version
|
44
|
+
@parser_engine = parser_engine
|
36
45
|
@parser_error = nil
|
37
46
|
|
38
|
-
parse(source, ruby_version)
|
47
|
+
parse(source, ruby_version, parser_engine)
|
39
48
|
end
|
40
49
|
|
41
50
|
def ast_with_comments
|
@@ -193,7 +202,7 @@ module RuboCop
|
|
193
202
|
end
|
194
203
|
end
|
195
204
|
|
196
|
-
def parse(source, ruby_version)
|
205
|
+
def parse(source, ruby_version, parser_engine)
|
197
206
|
buffer_name = @path || STRING_SOURCE_NAME
|
198
207
|
@buffer = Parser::Source::Buffer.new(buffer_name, 1)
|
199
208
|
|
@@ -207,7 +216,7 @@ module RuboCop
|
|
207
216
|
return
|
208
217
|
end
|
209
218
|
|
210
|
-
@ast, @comments, @tokens = tokenize(create_parser(ruby_version))
|
219
|
+
@ast, @comments, @tokens = tokenize(create_parser(ruby_version, parser_engine))
|
211
220
|
end
|
212
221
|
|
213
222
|
def tokenize(parser)
|
@@ -227,58 +236,77 @@ module RuboCop
|
|
227
236
|
end
|
228
237
|
|
229
238
|
# rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
230
|
-
def parser_class(ruby_version)
|
231
|
-
case
|
232
|
-
when
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
239
|
+
def parser_class(ruby_version, parser_engine)
|
240
|
+
case parser_engine
|
241
|
+
when :parser_whitequark
|
242
|
+
case ruby_version
|
243
|
+
when 1.9
|
244
|
+
require 'parser/ruby19'
|
245
|
+
Parser::Ruby19
|
246
|
+
when 2.0
|
247
|
+
require 'parser/ruby20'
|
248
|
+
Parser::Ruby20
|
249
|
+
when 2.1
|
250
|
+
require 'parser/ruby21'
|
251
|
+
Parser::Ruby21
|
252
|
+
when 2.2
|
253
|
+
require 'parser/ruby22'
|
254
|
+
Parser::Ruby22
|
255
|
+
when 2.3
|
256
|
+
require 'parser/ruby23'
|
257
|
+
Parser::Ruby23
|
258
|
+
when 2.4
|
259
|
+
require 'parser/ruby24'
|
260
|
+
Parser::Ruby24
|
261
|
+
when 2.5
|
262
|
+
require 'parser/ruby25'
|
263
|
+
Parser::Ruby25
|
264
|
+
when 2.6
|
265
|
+
require 'parser/ruby26'
|
266
|
+
Parser::Ruby26
|
267
|
+
when 2.7
|
268
|
+
require 'parser/ruby27'
|
269
|
+
Parser::Ruby27
|
270
|
+
when 2.8, 3.0
|
271
|
+
require 'parser/ruby30'
|
272
|
+
Parser::Ruby30
|
273
|
+
when 3.1
|
274
|
+
require 'parser/ruby31'
|
275
|
+
Parser::Ruby31
|
276
|
+
when 3.2
|
277
|
+
require 'parser/ruby32'
|
278
|
+
Parser::Ruby32
|
279
|
+
when 3.3
|
280
|
+
require 'parser/ruby33'
|
281
|
+
Parser::Ruby33
|
282
|
+
when 3.4
|
283
|
+
require 'parser/ruby34'
|
284
|
+
Parser::Ruby34
|
285
|
+
else
|
286
|
+
raise ArgumentError, "RuboCop found unknown Ruby version: #{ruby_version.inspect}"
|
287
|
+
end
|
288
|
+
when :parser_prism
|
289
|
+
require 'prism'
|
290
|
+
|
291
|
+
case ruby_version
|
292
|
+
when 3.3
|
293
|
+
require 'prism/translation/parser33'
|
294
|
+
Prism::Translation::Parser33
|
295
|
+
when 3.4
|
296
|
+
require 'prism/translation/parser34'
|
297
|
+
Prism::Translation::Parser34
|
298
|
+
else
|
299
|
+
raise ArgumentError, 'RuboCop supports target Ruby versions 3.3 and above with Prism. ' \
|
300
|
+
"Specified target Ruby version: #{ruby_version.inspect}"
|
301
|
+
end
|
274
302
|
end
|
275
303
|
end
|
276
304
|
# rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
|
277
305
|
|
278
|
-
def create_parser(ruby_version)
|
306
|
+
def create_parser(ruby_version, parser_engine)
|
279
307
|
builder = RuboCop::AST::Builder.new
|
280
308
|
|
281
|
-
parser_class(ruby_version).new(builder).tap do |parser|
|
309
|
+
parser_class(ruby_version, parser_engine).new(builder).tap do |parser|
|
282
310
|
# On JRuby there's a risk that we hang in tokenize() if we
|
283
311
|
# don't set the all errors as fatal flag. The problem is caused by a bug
|
284
312
|
# in Racc that is discussed in issue #93 of the whitequark/parser
|
data/lib/rubocop/ast/token.rb
CHANGED
data/lib/rubocop/ast/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubocop-ast
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bozhidar Batsov
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-02-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: parser
|
@@ -18,14 +18,28 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.
|
21
|
+
version: 3.3.0.4
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
26
|
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
version: 3.
|
28
|
+
version: 3.3.0.4
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: prism
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - ">="
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: 0.24.0
|
36
|
+
type: :runtime
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - ">="
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: 0.24.0
|
29
43
|
description: " RuboCop's Node and NodePattern classes.\n"
|
30
44
|
email: rubocop@googlegroups.com
|
31
45
|
executables: []
|
@@ -149,14 +163,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
163
|
requirements:
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.
|
166
|
+
version: 2.7.0
|
153
167
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
168
|
requirements:
|
155
169
|
- - ">="
|
156
170
|
- !ruby/object:Gem::Version
|
157
171
|
version: '0'
|
158
172
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
173
|
+
rubygems_version: 3.3.7
|
160
174
|
signing_key:
|
161
175
|
specification_version: 4
|
162
176
|
summary: RuboCop tools to deal with Ruby code AST.
|