spoom 1.5.0 → 1.7.2

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -0
  3. data/lib/spoom/backtrace_filter/minitest.rb +3 -4
  4. data/lib/spoom/cli/deadcode.rb +1 -2
  5. data/lib/spoom/cli/helper.rb +41 -31
  6. data/lib/spoom/cli/srb/assertions.rb +48 -0
  7. data/lib/spoom/cli/srb/bump.rb +1 -2
  8. data/lib/spoom/cli/srb/coverage.rb +1 -1
  9. data/lib/spoom/cli/srb/metrics.rb +68 -0
  10. data/lib/spoom/cli/srb/sigs.rb +209 -0
  11. data/lib/spoom/cli/srb/tc.rb +16 -1
  12. data/lib/spoom/cli/srb.rb +16 -4
  13. data/lib/spoom/cli.rb +1 -2
  14. data/lib/spoom/colors.rb +2 -6
  15. data/lib/spoom/context/bundle.rb +8 -9
  16. data/lib/spoom/context/exec.rb +3 -6
  17. data/lib/spoom/context/file_system.rb +12 -19
  18. data/lib/spoom/context/git.rb +14 -19
  19. data/lib/spoom/context/sorbet.rb +14 -27
  20. data/lib/spoom/context.rb +4 -8
  21. data/lib/spoom/counters.rb +22 -0
  22. data/lib/spoom/coverage/d3/base.rb +6 -8
  23. data/lib/spoom/coverage/d3/circle_map.rb +6 -16
  24. data/lib/spoom/coverage/d3/pie.rb +14 -19
  25. data/lib/spoom/coverage/d3/timeline.rb +46 -47
  26. data/lib/spoom/coverage/d3.rb +2 -4
  27. data/lib/spoom/coverage/report.rb +41 -79
  28. data/lib/spoom/coverage/snapshot.rb +8 -14
  29. data/lib/spoom/coverage.rb +3 -5
  30. data/lib/spoom/deadcode/definition.rb +12 -14
  31. data/lib/spoom/deadcode/erb.rb +10 -8
  32. data/lib/spoom/deadcode/index.rb +21 -25
  33. data/lib/spoom/deadcode/indexer.rb +5 -6
  34. data/lib/spoom/deadcode/plugins/action_mailer.rb +2 -3
  35. data/lib/spoom/deadcode/plugins/action_mailer_preview.rb +2 -3
  36. data/lib/spoom/deadcode/plugins/actionpack.rb +19 -22
  37. data/lib/spoom/deadcode/plugins/active_model.rb +2 -3
  38. data/lib/spoom/deadcode/plugins/active_record.rb +62 -53
  39. data/lib/spoom/deadcode/plugins/active_support.rb +3 -2
  40. data/lib/spoom/deadcode/plugins/base.rb +29 -32
  41. data/lib/spoom/deadcode/plugins/graphql.rb +2 -3
  42. data/lib/spoom/deadcode/plugins/minitest.rb +4 -4
  43. data/lib/spoom/deadcode/plugins/namespaces.rb +5 -5
  44. data/lib/spoom/deadcode/plugins/rails.rb +5 -5
  45. data/lib/spoom/deadcode/plugins/rubocop.rb +5 -5
  46. data/lib/spoom/deadcode/plugins/ruby.rb +3 -4
  47. data/lib/spoom/deadcode/plugins/sorbet.rb +12 -6
  48. data/lib/spoom/deadcode/plugins/thor.rb +2 -3
  49. data/lib/spoom/deadcode/plugins.rb +23 -31
  50. data/lib/spoom/deadcode/remover.rb +58 -79
  51. data/lib/spoom/deadcode/send.rb +2 -8
  52. data/lib/spoom/file_collector.rb +11 -19
  53. data/lib/spoom/file_tree.rb +36 -51
  54. data/lib/spoom/location.rb +9 -20
  55. data/lib/spoom/model/builder.rb +54 -17
  56. data/lib/spoom/model/model.rb +71 -74
  57. data/lib/spoom/model/namespace_visitor.rb +4 -3
  58. data/lib/spoom/model/reference.rb +4 -8
  59. data/lib/spoom/model/references_visitor.rb +50 -30
  60. data/lib/spoom/parse.rb +4 -4
  61. data/lib/spoom/poset.rb +22 -24
  62. data/lib/spoom/printer.rb +10 -13
  63. data/lib/spoom/rbs.rb +77 -0
  64. data/lib/spoom/sorbet/config.rb +17 -24
  65. data/lib/spoom/sorbet/errors.rb +87 -45
  66. data/lib/spoom/sorbet/lsp/base.rb +10 -16
  67. data/lib/spoom/sorbet/lsp/errors.rb +8 -16
  68. data/lib/spoom/sorbet/lsp/structures.rb +65 -91
  69. data/lib/spoom/sorbet/lsp.rb +20 -22
  70. data/lib/spoom/sorbet/metrics/code_metrics_visitor.rb +236 -0
  71. data/lib/spoom/sorbet/metrics/metrics_file_parser.rb +34 -0
  72. data/lib/spoom/sorbet/metrics.rb +2 -32
  73. data/lib/spoom/sorbet/sigils.rb +16 -23
  74. data/lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb +242 -0
  75. data/lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb +123 -0
  76. data/lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb +293 -0
  77. data/lib/spoom/sorbet/translate/strip_sorbet_sigs.rb +23 -0
  78. data/lib/spoom/sorbet/translate/translator.rb +71 -0
  79. data/lib/spoom/sorbet/translate.rb +49 -0
  80. data/lib/spoom/sorbet.rb +6 -12
  81. data/lib/spoom/source/rewriter.rb +167 -0
  82. data/lib/spoom/source.rb +4 -0
  83. data/lib/spoom/timeline.rb +4 -6
  84. data/lib/spoom/version.rb +1 -1
  85. data/lib/spoom/visitor.rb +298 -151
  86. data/lib/spoom.rb +4 -3
  87. data/rbi/spoom.rbi +3567 -0
  88. metadata +62 -8
data/rbi/spoom.rbi ADDED
@@ -0,0 +1,3567 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `spoom` gem.
5
+ # Please instead update this file by running `spoom srb sigs export`.
6
+
7
+ module Spoom
8
+ class << self
9
+ sig { params(ruby: ::String, file: ::String, comments: T::Boolean).returns(::Prism::Node) }
10
+ def parse_ruby(ruby, file:, comments: T.unsafe(nil)); end
11
+ end
12
+ end
13
+
14
+ module Spoom::Cli; end
15
+
16
+ class Spoom::Cli::Deadcode < ::Thor
17
+ include ::Spoom::Colorize
18
+ include ::Spoom::Cli::Helper
19
+
20
+ sig { params(paths: ::String).void }
21
+ def deadcode(*paths); end
22
+
23
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
24
+ def remove(location_string); end
25
+ end
26
+
27
+ module Spoom::Cli::Helper
28
+ include ::Spoom::Colorize
29
+
30
+ requires_ancestor { Thor }
31
+
32
+ sig { params(string: ::String).returns(::String) }
33
+ def blue(string); end
34
+
35
+ sig { params(paths: T::Array[::String], include_rbi_files: T::Boolean).returns(T::Array[::String]) }
36
+ def collect_files(paths, include_rbi_files: T.unsafe(nil)); end
37
+
38
+ sig { returns(T::Boolean) }
39
+ def color?; end
40
+
41
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
42
+ def colorize(string, *color); end
43
+
44
+ sig { returns(::Spoom::Context) }
45
+ def context; end
46
+
47
+ sig { returns(::Spoom::Context) }
48
+ def context_requiring_sorbet!; end
49
+
50
+ sig { params(string: ::String).returns(::String) }
51
+ def cyan(string); end
52
+
53
+ sig { returns(::String) }
54
+ def exec_path; end
55
+
56
+ sig { params(string: ::String).returns(::String) }
57
+ def gray(string); end
58
+
59
+ sig { params(string: ::String).returns(::String) }
60
+ def green(string); end
61
+
62
+ sig { params(string: ::String).returns(::String) }
63
+ def highlight(string); end
64
+
65
+ sig { params(string: ::String).returns(::String) }
66
+ def red(string); end
67
+
68
+ sig { params(message: ::String).void }
69
+ def say(message); end
70
+
71
+ sig { params(message: ::String, status: T.nilable(::String), nl: T::Boolean).void }
72
+ def say_error(message, status: T.unsafe(nil), nl: T.unsafe(nil)); end
73
+
74
+ sig { params(message: ::String, status: T.nilable(::String), nl: T::Boolean).void }
75
+ def say_warning(message, status: T.unsafe(nil), nl: T.unsafe(nil)); end
76
+
77
+ sig { params(string: ::String).returns(::String) }
78
+ def yellow(string); end
79
+ end
80
+
81
+ class Spoom::Cli::Main < ::Thor
82
+ include ::Spoom::Colorize
83
+ include ::Spoom::Cli::Helper
84
+
85
+ def __print_version; end
86
+
87
+ sig { params(directory: ::String).void }
88
+ def bump(directory = T.unsafe(nil)); end
89
+
90
+ def coverage(*args); end
91
+ def deadcode(*args); end
92
+ def lsp(*args); end
93
+ def srb(*args); end
94
+ def tc(*paths_to_select); end
95
+
96
+ class << self
97
+ def exit_on_failure?; end
98
+ end
99
+ end
100
+
101
+ Spoom::Cli::Main::SORT_CODE = T.let(T.unsafe(nil), String)
102
+ Spoom::Cli::Main::SORT_ENUM = T.let(T.unsafe(nil), Array)
103
+ Spoom::Cli::Main::SORT_LOC = T.let(T.unsafe(nil), String)
104
+ module Spoom::Cli::Srb; end
105
+
106
+ class Spoom::Cli::Srb::Assertions < ::Thor
107
+ include ::Spoom::Colorize
108
+ include ::Spoom::Cli::Helper
109
+
110
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
111
+ def transform_files(files, &block); end
112
+ def translate(*paths); end
113
+ end
114
+
115
+ class Spoom::Cli::Srb::Bump < ::Thor
116
+ include ::Spoom::Colorize
117
+ include ::Spoom::Cli::Helper
118
+
119
+ sig { params(directory: ::String).void }
120
+ def bump(directory = T.unsafe(nil)); end
121
+
122
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
123
+ def print_changes(files, command:, from: T.unsafe(nil), to: T.unsafe(nil), dry: T.unsafe(nil), path: T.unsafe(nil)); end
124
+ def undo_changes(files, from_strictness); end
125
+ end
126
+
127
+ class Spoom::Cli::Srb::Coverage < ::Thor
128
+ include ::Spoom::Colorize
129
+ include ::Spoom::Cli::Helper
130
+
131
+ def bundle_install(path, sha); end
132
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
133
+ def message_no_data(file); end
134
+ def open(file = T.unsafe(nil)); end
135
+ def parse_time(string, option); end
136
+ def report; end
137
+ def snapshot; end
138
+ def timeline; end
139
+ end
140
+
141
+ Spoom::Cli::Srb::Coverage::DATA_DIR = T.let(T.unsafe(nil), String)
142
+
143
+ class Spoom::Cli::Srb::LSP < ::Thor
144
+ include ::Spoom::Colorize
145
+ include ::Spoom::Cli::Helper
146
+
147
+ def defs(file, line, col); end
148
+ def find(query); end
149
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
150
+ def hover(file, line, col); end
151
+ def list; end
152
+ def lsp_client; end
153
+ def refs(file, line, col); end
154
+ def run(&block); end
155
+ def sigs(file, line, col); end
156
+ def symbol_printer; end
157
+ def symbols(file); end
158
+ def to_uri(path); end
159
+ def types(file, line, col); end
160
+ end
161
+
162
+ class Spoom::Cli::Srb::Main < ::Thor
163
+ def assertions(*args); end
164
+ def bump(*args); end
165
+ def coverage(*args); end
166
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
167
+ def lsp(*args); end
168
+ def metrics(*args); end
169
+ def sigs(*args); end
170
+ def tc(*args); end
171
+ end
172
+
173
+ class Spoom::Cli::Srb::Metrics < ::Thor
174
+ include ::Spoom::Colorize
175
+ include ::Spoom::Cli::Helper
176
+
177
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
178
+ def show(*paths); end
179
+ end
180
+
181
+ class Spoom::Cli::Srb::Sigs < ::Thor
182
+ include ::Spoom::Colorize
183
+ include ::Spoom::Cli::Helper
184
+
185
+ def exec(context, command); end
186
+ def export(output_path = T.unsafe(nil)); end
187
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
188
+ def strip(*paths); end
189
+ def transform_files(files, &block); end
190
+ def translate(*paths); end
191
+ end
192
+
193
+ class Spoom::Cli::Srb::Tc < ::Thor
194
+ include ::Spoom::Colorize
195
+ include ::Spoom::Cli::Helper
196
+
197
+ def colorize_message(message); end
198
+ def format_error(error, format); end
199
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
200
+ def tc(*paths_to_select); end
201
+ end
202
+
203
+ Spoom::Cli::Srb::Tc::DEFAULT_FORMAT = T.let(T.unsafe(nil), String)
204
+ Spoom::Cli::Srb::Tc::SORT_CODE = T.let(T.unsafe(nil), String)
205
+ Spoom::Cli::Srb::Tc::SORT_ENUM = T.let(T.unsafe(nil), Array)
206
+ Spoom::Cli::Srb::Tc::SORT_LOC = T.let(T.unsafe(nil), String)
207
+
208
+ class Spoom::Color < ::T::Enum
209
+ enums do
210
+ BLACK = new
211
+ BLUE = new
212
+ BOLD = new
213
+ CLEAR = new
214
+ CYAN = new
215
+ GREEN = new
216
+ LIGHT_BLACK = new
217
+ LIGHT_BLUE = new
218
+ LIGHT_CYAN = new
219
+ LIGHT_GREEN = new
220
+ LIGHT_MAGENTA = new
221
+ LIGHT_RED = new
222
+ LIGHT_WHITE = new
223
+ LIGHT_YELLOW = new
224
+ MAGENTA = new
225
+ RED = new
226
+ WHITE = new
227
+ YELLOW = new
228
+ end
229
+
230
+ sig { returns(::String) }
231
+ def ansi_code; end
232
+ end
233
+
234
+ module Spoom::Colorize
235
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
236
+ def set_color(string, *color); end
237
+ end
238
+
239
+ class Spoom::Context
240
+ include ::Spoom::Context::Bundle
241
+ include ::Spoom::Context::Exec
242
+ include ::Spoom::Context::FileSystem
243
+ include ::Spoom::Context::Git
244
+ include ::Spoom::Context::Sorbet
245
+
246
+ sig { params(absolute_path: ::String).void }
247
+ def initialize(absolute_path); end
248
+
249
+ sig { returns(::String) }
250
+ def absolute_path; end
251
+
252
+ class << self
253
+ sig { params(name: T.nilable(::String)).returns(T.attached_class) }
254
+ def mktmp!(name = T.unsafe(nil)); end
255
+ end
256
+ end
257
+
258
+ module Spoom::Context::Bundle
259
+ requires_ancestor { Spoom::Context }
260
+
261
+ sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
262
+ def bundle(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
263
+
264
+ sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
265
+ def bundle_exec(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
266
+
267
+ sig { params(version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
268
+ def bundle_install!(version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
269
+
270
+ sig { params(gem: ::String).returns(T.nilable(::Gem::Version)) }
271
+ def gem_version_from_gemfile_lock(gem); end
272
+
273
+ sig { returns(T::Hash[::String, ::Bundler::LazySpecification]) }
274
+ def gemfile_lock_specs; end
275
+
276
+ sig { returns(T.nilable(::String)) }
277
+ def read_gemfile; end
278
+
279
+ sig { returns(T.nilable(::String)) }
280
+ def read_gemfile_lock; end
281
+
282
+ sig { params(contents: ::String, append: T::Boolean).void }
283
+ def write_gemfile!(contents, append: T.unsafe(nil)); end
284
+ end
285
+
286
+ module Spoom::Context::Exec
287
+ requires_ancestor { Spoom::Context }
288
+
289
+ sig { params(command: ::String, capture_err: T::Boolean).returns(::Spoom::ExecResult) }
290
+ def exec(command, capture_err: T.unsafe(nil)); end
291
+ end
292
+
293
+ module Spoom::Context::FileSystem
294
+ requires_ancestor { Spoom::Context }
295
+
296
+ sig { params(relative_path: ::String).returns(::String) }
297
+ def absolute_path_to(relative_path); end
298
+
299
+ sig do
300
+ params(
301
+ allow_extensions: T::Array[::String],
302
+ allow_mime_types: T::Array[::String],
303
+ exclude_patterns: T::Array[::String]
304
+ ).returns(T::Array[::String])
305
+ end
306
+ def collect_files(allow_extensions: T.unsafe(nil), allow_mime_types: T.unsafe(nil), exclude_patterns: T.unsafe(nil)); end
307
+
308
+ sig { void }
309
+ def destroy!; end
310
+
311
+ sig { returns(T::Boolean) }
312
+ def exist?; end
313
+
314
+ sig { params(relative_path: ::String).returns(T::Boolean) }
315
+ def file?(relative_path); end
316
+
317
+ sig { params(pattern: ::String).returns(T::Array[::String]) }
318
+ def glob(pattern = T.unsafe(nil)); end
319
+
320
+ sig { returns(T::Array[::String]) }
321
+ def list; end
322
+
323
+ sig { void }
324
+ def mkdir!; end
325
+
326
+ sig { params(from_relative_path: ::String, to_relative_path: ::String).void }
327
+ def move!(from_relative_path, to_relative_path); end
328
+
329
+ sig { params(relative_path: ::String).returns(::String) }
330
+ def read(relative_path); end
331
+
332
+ sig { params(relative_path: ::String).void }
333
+ def remove!(relative_path); end
334
+
335
+ sig { params(relative_path: ::String, contents: ::String, append: T::Boolean).void }
336
+ def write!(relative_path, contents = T.unsafe(nil), append: T.unsafe(nil)); end
337
+ end
338
+
339
+ module Spoom::Context::Git
340
+ requires_ancestor { Spoom::Context }
341
+
342
+ sig { params(command: ::String).returns(::Spoom::ExecResult) }
343
+ def git(command); end
344
+
345
+ sig { params(ref: ::String).returns(::Spoom::ExecResult) }
346
+ def git_checkout!(ref: T.unsafe(nil)); end
347
+
348
+ sig { params(branch_name: ::String, ref: T.nilable(::String)).returns(::Spoom::ExecResult) }
349
+ def git_checkout_new_branch!(branch_name, ref: T.unsafe(nil)); end
350
+
351
+ sig { params(message: ::String, time: ::Time, allow_empty: T::Boolean).returns(::Spoom::ExecResult) }
352
+ def git_commit!(message: T.unsafe(nil), time: T.unsafe(nil), allow_empty: T.unsafe(nil)); end
353
+
354
+ sig { returns(T.nilable(::String)) }
355
+ def git_current_branch; end
356
+
357
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
358
+ def git_diff(*arg); end
359
+
360
+ sig { params(branch: T.nilable(::String)).returns(::Spoom::ExecResult) }
361
+ def git_init!(branch: T.unsafe(nil)); end
362
+
363
+ sig { params(short_sha: T::Boolean).returns(T.nilable(::Spoom::Git::Commit)) }
364
+ def git_last_commit(short_sha: T.unsafe(nil)); end
365
+
366
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
367
+ def git_log(*arg); end
368
+
369
+ sig { params(remote: ::String, ref: ::String, force: T::Boolean).returns(::Spoom::ExecResult) }
370
+ def git_push!(remote, ref, force: T.unsafe(nil)); end
371
+
372
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
373
+ def git_show(*arg); end
374
+
375
+ sig { params(path: ::String).returns(T::Boolean) }
376
+ def git_workdir_clean?(path: T.unsafe(nil)); end
377
+ end
378
+
379
+ module Spoom::Context::Sorbet
380
+ requires_ancestor { Spoom::Context }
381
+
382
+ sig { returns(T::Boolean) }
383
+ def has_sorbet_config?; end
384
+
385
+ sig { params(relative_path: ::String).returns(T.nilable(::String)) }
386
+ def read_file_strictness(relative_path); end
387
+
388
+ sig { returns(::String) }
389
+ def read_sorbet_config; end
390
+
391
+ sig { returns(::Spoom::Sorbet::Config) }
392
+ def sorbet_config; end
393
+
394
+ sig { returns(T.nilable(::Spoom::Git::Commit)) }
395
+ def sorbet_intro_commit; end
396
+
397
+ sig { returns(T.nilable(::Spoom::Git::Commit)) }
398
+ def sorbet_removal_commit; end
399
+
400
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
401
+ def srb(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
402
+
403
+ sig { params(with_config: T.nilable(::Spoom::Sorbet::Config), include_rbis: T::Boolean).returns(T::Array[::String]) }
404
+ def srb_files(with_config: T.unsafe(nil), include_rbis: T.unsafe(nil)); end
405
+
406
+ sig do
407
+ params(
408
+ strictness: ::String,
409
+ with_config: T.nilable(::Spoom::Sorbet::Config),
410
+ include_rbis: T::Boolean
411
+ ).returns(T::Array[::String])
412
+ end
413
+ def srb_files_with_strictness(strictness, with_config: T.unsafe(nil), include_rbis: T.unsafe(nil)); end
414
+
415
+ sig do
416
+ params(
417
+ arg: ::String,
418
+ sorbet_bin: T.nilable(::String),
419
+ capture_err: T::Boolean
420
+ ).returns(T.nilable(T::Hash[::String, ::Integer]))
421
+ end
422
+ def srb_metrics(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
423
+
424
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
425
+ def srb_tc(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
426
+
427
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(T.nilable(::String)) }
428
+ def srb_version(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
429
+
430
+ sig { params(contents: ::String, append: T::Boolean).void }
431
+ def write_sorbet_config!(contents, append: T.unsafe(nil)); end
432
+ end
433
+
434
+ class Spoom::Counters < ::Hash
435
+ sig { void }
436
+ def initialize; end
437
+
438
+ sig { params(key: ::String).returns(::Integer) }
439
+ def [](key); end
440
+
441
+ sig { params(key: ::String).void }
442
+ def increment(key); end
443
+ end
444
+
445
+ module Spoom::Coverage
446
+ class << self
447
+ sig { params(context: ::Spoom::Context).returns(::Spoom::FileTree) }
448
+ def file_tree(context); end
449
+
450
+ sig do
451
+ params(
452
+ context: ::Spoom::Context,
453
+ snapshots: T::Array[::Spoom::Coverage::Snapshot],
454
+ palette: ::Spoom::Coverage::D3::ColorPalette
455
+ ).returns(::Spoom::Coverage::Report)
456
+ end
457
+ def report(context, snapshots, palette:); end
458
+
459
+ sig do
460
+ params(
461
+ context: ::Spoom::Context,
462
+ rbi: T::Boolean,
463
+ sorbet_bin: T.nilable(::String)
464
+ ).returns(::Spoom::Coverage::Snapshot)
465
+ end
466
+ def snapshot(context, rbi: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
467
+ end
468
+ end
469
+
470
+ module Spoom::Coverage::Cards; end
471
+
472
+ class Spoom::Coverage::Cards::Card < ::Spoom::Coverage::Template
473
+ sig { params(template: ::String, title: T.nilable(::String), body: T.nilable(::String)).void }
474
+ def initialize(template: T.unsafe(nil), title: T.unsafe(nil), body: T.unsafe(nil)); end
475
+
476
+ def body; end
477
+
478
+ sig { returns(T.nilable(::String)) }
479
+ def title; end
480
+ end
481
+
482
+ Spoom::Coverage::Cards::Card::TEMPLATE = T.let(T.unsafe(nil), String)
483
+
484
+ class Spoom::Coverage::Cards::Erb < ::Spoom::Coverage::Cards::Card
485
+ abstract!
486
+
487
+ sig { void }
488
+ def initialize; end
489
+
490
+ sig { abstract.returns(::String) }
491
+ def erb; end
492
+
493
+ sig { override.returns(::String) }
494
+ def html; end
495
+ end
496
+
497
+ class Spoom::Coverage::Cards::Map < ::Spoom::Coverage::Cards::Card
498
+ sig do
499
+ params(
500
+ file_tree: ::Spoom::FileTree,
501
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
502
+ nodes_strictness_scores: T::Hash[::Spoom::FileTree::Node, ::Float],
503
+ title: ::String
504
+ ).void
505
+ end
506
+ def initialize(file_tree:, nodes_strictnesses:, nodes_strictness_scores:, title: T.unsafe(nil)); end
507
+ end
508
+
509
+ class Spoom::Coverage::Cards::Snapshot < ::Spoom::Coverage::Cards::Card
510
+ sig { params(snapshot: ::Spoom::Coverage::Snapshot, title: ::String).void }
511
+ def initialize(snapshot:, title: T.unsafe(nil)); end
512
+
513
+ sig { returns(::Spoom::Coverage::D3::Pie::Calls) }
514
+ def pie_calls; end
515
+
516
+ sig { returns(::Spoom::Coverage::D3::Pie::Sigils) }
517
+ def pie_sigils; end
518
+
519
+ sig { returns(::Spoom::Coverage::D3::Pie::Sigs) }
520
+ def pie_sigs; end
521
+
522
+ sig { returns(::Spoom::Coverage::Snapshot) }
523
+ def snapshot; end
524
+ end
525
+
526
+ Spoom::Coverage::Cards::Snapshot::TEMPLATE = T.let(T.unsafe(nil), String)
527
+
528
+ class Spoom::Coverage::Cards::SorbetIntro < ::Spoom::Coverage::Cards::Erb
529
+ sig { params(sorbet_intro_commit: T.nilable(::String), sorbet_intro_date: T.nilable(::Time)).void }
530
+ def initialize(sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
531
+
532
+ sig { override.returns(::String) }
533
+ def erb; end
534
+ end
535
+
536
+ class Spoom::Coverage::Cards::Timeline < ::Spoom::Coverage::Cards::Card
537
+ sig { params(title: ::String, timeline: ::Spoom::Coverage::D3::Timeline).void }
538
+ def initialize(title:, timeline:); end
539
+ end
540
+
541
+ class Spoom::Coverage::Cards::Timeline::Calls < ::Spoom::Coverage::Cards::Timeline
542
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
543
+ def initialize(snapshots:, title: T.unsafe(nil)); end
544
+ end
545
+
546
+ class Spoom::Coverage::Cards::Timeline::RBIs < ::Spoom::Coverage::Cards::Timeline
547
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
548
+ def initialize(snapshots:, title: T.unsafe(nil)); end
549
+ end
550
+
551
+ class Spoom::Coverage::Cards::Timeline::Runtimes < ::Spoom::Coverage::Cards::Timeline
552
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
553
+ def initialize(snapshots:, title: T.unsafe(nil)); end
554
+ end
555
+
556
+ class Spoom::Coverage::Cards::Timeline::Sigils < ::Spoom::Coverage::Cards::Timeline
557
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
558
+ def initialize(snapshots:, title: T.unsafe(nil)); end
559
+ end
560
+
561
+ class Spoom::Coverage::Cards::Timeline::Sigs < ::Spoom::Coverage::Cards::Timeline
562
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
563
+ def initialize(snapshots:, title: T.unsafe(nil)); end
564
+ end
565
+
566
+ class Spoom::Coverage::Cards::Timeline::Versions < ::Spoom::Coverage::Cards::Timeline
567
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
568
+ def initialize(snapshots:, title: T.unsafe(nil)); end
569
+ end
570
+
571
+ module Spoom::Coverage::D3
572
+ class << self
573
+ sig { params(palette: ::Spoom::Coverage::D3::ColorPalette).returns(::String) }
574
+ def header_script(palette); end
575
+
576
+ sig { returns(::String) }
577
+ def header_style; end
578
+ end
579
+ end
580
+
581
+ class Spoom::Coverage::D3::Base
582
+ abstract!
583
+
584
+ sig { params(id: ::String, data: T.untyped).void }
585
+ def initialize(id, data); end
586
+
587
+ sig { returns(::String) }
588
+ def html; end
589
+
590
+ sig { returns(::String) }
591
+ def id; end
592
+
593
+ sig { abstract.returns(::String) }
594
+ def script; end
595
+
596
+ sig { returns(::String) }
597
+ def tooltip; end
598
+
599
+ class << self
600
+ sig { returns(::String) }
601
+ def header_script; end
602
+
603
+ sig { returns(::String) }
604
+ def header_style; end
605
+ end
606
+ end
607
+
608
+ Spoom::Coverage::D3::COLOR_FALSE = T.let(T.unsafe(nil), String)
609
+ Spoom::Coverage::D3::COLOR_IGNORE = T.let(T.unsafe(nil), String)
610
+ Spoom::Coverage::D3::COLOR_STRICT = T.let(T.unsafe(nil), String)
611
+ Spoom::Coverage::D3::COLOR_STRONG = T.let(T.unsafe(nil), String)
612
+ Spoom::Coverage::D3::COLOR_TRUE = T.let(T.unsafe(nil), String)
613
+
614
+ class Spoom::Coverage::D3::CircleMap < ::Spoom::Coverage::D3::Base
615
+ sig { override.returns(::String) }
616
+ def script; end
617
+
618
+ class << self
619
+ sig { returns(::String) }
620
+ def header_script; end
621
+
622
+ sig { returns(::String) }
623
+ def header_style; end
624
+ end
625
+ end
626
+
627
+ class Spoom::Coverage::D3::CircleMap::Sigils < ::Spoom::Coverage::D3::CircleMap
628
+ sig do
629
+ params(
630
+ id: ::String,
631
+ file_tree: ::Spoom::FileTree,
632
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
633
+ nodes_scores: T::Hash[::Spoom::FileTree::Node, ::Float]
634
+ ).void
635
+ end
636
+ def initialize(id, file_tree, nodes_strictnesses, nodes_scores); end
637
+
638
+ sig { params(node: ::Spoom::FileTree::Node).returns(T::Hash[::Symbol, T.untyped]) }
639
+ def tree_node_to_json(node); end
640
+ end
641
+
642
+ class Spoom::Coverage::D3::ColorPalette < ::T::Struct
643
+ prop :ignore, ::String
644
+ prop :false, ::String
645
+ prop :true, ::String
646
+ prop :strict, ::String
647
+ prop :strong, ::String
648
+
649
+ class << self
650
+ def inherited(s); end
651
+ end
652
+ end
653
+
654
+ class Spoom::Coverage::D3::Pie < ::Spoom::Coverage::D3::Base
655
+ abstract!
656
+
657
+ sig { params(id: ::String, title: ::String, data: T.untyped).void }
658
+ def initialize(id, title, data); end
659
+
660
+ sig { override.returns(::String) }
661
+ def script; end
662
+
663
+ class << self
664
+ sig { returns(::String) }
665
+ def header_script; end
666
+
667
+ sig { returns(::String) }
668
+ def header_style; end
669
+ end
670
+ end
671
+
672
+ class Spoom::Coverage::D3::Pie::Calls < ::Spoom::Coverage::D3::Pie
673
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
674
+ def initialize(id, title, snapshot); end
675
+
676
+ sig { override.returns(::String) }
677
+ def tooltip; end
678
+ end
679
+
680
+ class Spoom::Coverage::D3::Pie::Sigils < ::Spoom::Coverage::D3::Pie
681
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
682
+ def initialize(id, title, snapshot); end
683
+
684
+ sig { override.returns(::String) }
685
+ def tooltip; end
686
+ end
687
+
688
+ class Spoom::Coverage::D3::Pie::Sigs < ::Spoom::Coverage::D3::Pie
689
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
690
+ def initialize(id, title, snapshot); end
691
+
692
+ sig { override.returns(::String) }
693
+ def tooltip; end
694
+ end
695
+
696
+ class Spoom::Coverage::D3::Timeline < ::Spoom::Coverage::D3::Base
697
+ abstract!
698
+
699
+ sig { params(id: ::String, data: T.untyped, keys: T::Array[::String]).void }
700
+ def initialize(id, data, keys); end
701
+
702
+ sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
703
+ def area(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
704
+
705
+ sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
706
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
707
+
708
+ sig { abstract.returns(::String) }
709
+ def plot; end
710
+
711
+ sig { params(y: ::String).returns(::String) }
712
+ def points(y:); end
713
+
714
+ sig { override.returns(::String) }
715
+ def script; end
716
+
717
+ sig { returns(::String) }
718
+ def x_scale; end
719
+
720
+ sig { returns(::String) }
721
+ def x_ticks; end
722
+
723
+ sig { params(min: ::String, max: ::String, ticks: ::String).returns(::String) }
724
+ def y_scale(min:, max:, ticks:); end
725
+
726
+ sig { params(ticks: ::String, format: ::String, padding: ::Integer).returns(::String) }
727
+ def y_ticks(ticks:, format:, padding:); end
728
+
729
+ class << self
730
+ sig { returns(::String) }
731
+ def header_script; end
732
+
733
+ sig { returns(::String) }
734
+ def header_style; end
735
+ end
736
+ end
737
+
738
+ class Spoom::Coverage::D3::Timeline::Calls < ::Spoom::Coverage::D3::Timeline::Stacked
739
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
740
+ def initialize(id, snapshots); end
741
+
742
+ sig { override.returns(::String) }
743
+ def tooltip; end
744
+ end
745
+
746
+ class Spoom::Coverage::D3::Timeline::RBIs < ::Spoom::Coverage::D3::Timeline::Stacked
747
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
748
+ def initialize(id, snapshots); end
749
+
750
+ sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
751
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
752
+
753
+ sig { override.returns(::String) }
754
+ def plot; end
755
+
756
+ sig { override.returns(::String) }
757
+ def script; end
758
+
759
+ sig { override.returns(::String) }
760
+ def tooltip; end
761
+ end
762
+
763
+ class Spoom::Coverage::D3::Timeline::Runtimes < ::Spoom::Coverage::D3::Timeline
764
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
765
+ def initialize(id, snapshots); end
766
+
767
+ sig { override.returns(::String) }
768
+ def plot; end
769
+
770
+ sig { override.returns(::String) }
771
+ def tooltip; end
772
+ end
773
+
774
+ class Spoom::Coverage::D3::Timeline::Sigils < ::Spoom::Coverage::D3::Timeline::Stacked
775
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
776
+ def initialize(id, snapshots); end
777
+
778
+ sig { override.returns(::String) }
779
+ def tooltip; end
780
+ end
781
+
782
+ class Spoom::Coverage::D3::Timeline::Sigs < ::Spoom::Coverage::D3::Timeline::Stacked
783
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
784
+ def initialize(id, snapshots); end
785
+
786
+ sig { override.returns(::String) }
787
+ def tooltip; end
788
+ end
789
+
790
+ class Spoom::Coverage::D3::Timeline::Stacked < ::Spoom::Coverage::D3::Timeline
791
+ abstract!
792
+
793
+ sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
794
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
795
+
796
+ sig { override.returns(::String) }
797
+ def plot; end
798
+
799
+ sig { override.returns(::String) }
800
+ def script; end
801
+ end
802
+
803
+ class Spoom::Coverage::D3::Timeline::Versions < ::Spoom::Coverage::D3::Timeline
804
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
805
+ def initialize(id, snapshots); end
806
+
807
+ sig { override.returns(::String) }
808
+ def plot; end
809
+
810
+ sig { override.returns(::String) }
811
+ def tooltip; end
812
+ end
813
+
814
+ class Spoom::Coverage::Page < ::Spoom::Coverage::Template
815
+ abstract!
816
+
817
+ sig { params(title: ::String, palette: ::Spoom::Coverage::D3::ColorPalette, template: ::String).void }
818
+ def initialize(title:, palette:, template: T.unsafe(nil)); end
819
+
820
+ sig { returns(::String) }
821
+ def body_html; end
822
+
823
+ sig { abstract.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
824
+ def cards; end
825
+
826
+ sig { returns(::String) }
827
+ def footer_html; end
828
+
829
+ sig { returns(::String) }
830
+ def header_html; end
831
+
832
+ sig { returns(::String) }
833
+ def header_script; end
834
+
835
+ sig { returns(::String) }
836
+ def header_style; end
837
+
838
+ sig { returns(::Spoom::Coverage::D3::ColorPalette) }
839
+ def palette; end
840
+
841
+ sig { returns(::String) }
842
+ def title; end
843
+ end
844
+
845
+ Spoom::Coverage::Page::TEMPLATE = T.let(T.unsafe(nil), String)
846
+
847
+ class Spoom::Coverage::Report < ::Spoom::Coverage::Page
848
+ sig do
849
+ params(
850
+ project_name: ::String,
851
+ palette: ::Spoom::Coverage::D3::ColorPalette,
852
+ snapshots: T::Array[::Spoom::Coverage::Snapshot],
853
+ file_tree: ::Spoom::FileTree,
854
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
855
+ nodes_strictness_scores: T::Hash[::Spoom::FileTree::Node, ::Float],
856
+ sorbet_intro_commit: T.nilable(::String),
857
+ sorbet_intro_date: T.nilable(::Time)
858
+ ).void
859
+ end
860
+ def initialize(project_name:, palette:, snapshots:, file_tree:, nodes_strictnesses:, nodes_strictness_scores:, sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
861
+
862
+ sig { override.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
863
+ def cards; end
864
+
865
+ sig { override.returns(::String) }
866
+ def header_html; end
867
+ end
868
+
869
+ class Spoom::Coverage::Snapshot < ::T::Struct
870
+ prop :timestamp, ::Integer, default: T.unsafe(nil)
871
+ prop :version_static, T.nilable(::String), default: T.unsafe(nil)
872
+ prop :version_runtime, T.nilable(::String), default: T.unsafe(nil)
873
+ prop :duration, ::Integer, default: T.unsafe(nil)
874
+ prop :commit_sha, T.nilable(::String), default: T.unsafe(nil)
875
+ prop :commit_timestamp, T.nilable(::Integer), default: T.unsafe(nil)
876
+ prop :files, ::Integer, default: T.unsafe(nil)
877
+ prop :rbi_files, ::Integer, default: T.unsafe(nil)
878
+ prop :modules, ::Integer, default: T.unsafe(nil)
879
+ prop :classes, ::Integer, default: T.unsafe(nil)
880
+ prop :singleton_classes, ::Integer, default: T.unsafe(nil)
881
+ prop :methods_without_sig, ::Integer, default: T.unsafe(nil)
882
+ prop :methods_with_sig, ::Integer, default: T.unsafe(nil)
883
+ prop :calls_untyped, ::Integer, default: T.unsafe(nil)
884
+ prop :calls_typed, ::Integer, default: T.unsafe(nil)
885
+ prop :sigils, T::Hash[::String, ::Integer], default: T.unsafe(nil)
886
+ prop :methods_with_sig_excluding_rbis, ::Integer, default: T.unsafe(nil)
887
+ prop :methods_without_sig_excluding_rbis, ::Integer, default: T.unsafe(nil)
888
+ prop :sigils_excluding_rbis, T::Hash[::String, ::Integer], default: T.unsafe(nil)
889
+
890
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
891
+ def print(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
892
+
893
+ sig { params(arg: T.untyped).returns(::String) }
894
+ def to_json(*arg); end
895
+
896
+ class << self
897
+ sig { params(json: ::String).returns(::Spoom::Coverage::Snapshot) }
898
+ def from_json(json); end
899
+
900
+ sig { params(obj: T::Hash[::String, T.untyped]).returns(::Spoom::Coverage::Snapshot) }
901
+ def from_obj(obj); end
902
+
903
+ def inherited(s); end
904
+ end
905
+ end
906
+
907
+ Spoom::Coverage::Snapshot::STRICTNESSES = T.let(T.unsafe(nil), Array)
908
+
909
+ class Spoom::Coverage::SnapshotPrinter < ::Spoom::Printer
910
+ sig { params(snapshot: ::Spoom::Coverage::Snapshot).void }
911
+ def print_snapshot(snapshot); end
912
+
913
+ private
914
+
915
+ sig { params(value: T.nilable(::Integer), total: T.nilable(::Integer)).returns(::String) }
916
+ def percent(value, total); end
917
+
918
+ sig { params(hash: T::Hash[::String, ::Integer], total: ::Integer).void }
919
+ def print_map(hash, total); end
920
+ end
921
+
922
+ class Spoom::Coverage::Template
923
+ abstract!
924
+
925
+ sig { params(template: ::String).void }
926
+ def initialize(template:); end
927
+
928
+ sig { returns(::String) }
929
+ def erb; end
930
+
931
+ sig { returns(::Binding) }
932
+ def get_binding; end
933
+
934
+ sig { returns(::String) }
935
+ def html; end
936
+ end
937
+
938
+ module Spoom::Deadcode
939
+ class << self
940
+ sig { params(context: ::Spoom::Context).returns(T::Array[T.class_of(Spoom::Deadcode::Plugins::Base)]) }
941
+ def load_custom_plugins(context); end
942
+
943
+ sig { params(context: ::Spoom::Context).returns(T::Set[T.class_of(Spoom::Deadcode::Plugins::Base)]) }
944
+ def plugins_from_gemfile_lock(context); end
945
+ end
946
+ end
947
+
948
+ Spoom::Deadcode::DEFAULT_CUSTOM_PLUGINS_PATH = T.let(T.unsafe(nil), String)
949
+ Spoom::Deadcode::DEFAULT_PLUGINS = T.let(T.unsafe(nil), Set)
950
+
951
+ class Spoom::Deadcode::Definition < ::T::Struct
952
+ const :kind, ::Spoom::Deadcode::Definition::Kind
953
+ const :name, ::String
954
+ const :full_name, ::String
955
+ const :location, ::Spoom::Location
956
+ const :status, ::Spoom::Deadcode::Definition::Status, default: T.unsafe(nil)
957
+
958
+ sig { void }
959
+ def alive!; end
960
+
961
+ sig { returns(T::Boolean) }
962
+ def alive?; end
963
+
964
+ sig { returns(T::Boolean) }
965
+ def attr_reader?; end
966
+
967
+ sig { returns(T::Boolean) }
968
+ def attr_writer?; end
969
+
970
+ sig { returns(T::Boolean) }
971
+ def class?; end
972
+
973
+ sig { returns(T::Boolean) }
974
+ def constant?; end
975
+
976
+ sig { returns(T::Boolean) }
977
+ def dead?; end
978
+
979
+ sig { void }
980
+ def ignored!; end
981
+
982
+ sig { returns(T::Boolean) }
983
+ def ignored?; end
984
+
985
+ sig { returns(T::Boolean) }
986
+ def method?; end
987
+
988
+ sig { returns(T::Boolean) }
989
+ def module?; end
990
+
991
+ sig { params(args: T.untyped).returns(::String) }
992
+ def to_json(*args); end
993
+
994
+ class << self
995
+ def inherited(s); end
996
+ end
997
+ end
998
+
999
+ class Spoom::Deadcode::Definition::Kind < ::T::Enum
1000
+ enums do
1001
+ AttrReader = new
1002
+ AttrWriter = new
1003
+ Class = new
1004
+ Constant = new
1005
+ Method = new
1006
+ Module = new
1007
+ end
1008
+ end
1009
+
1010
+ class Spoom::Deadcode::Definition::Status < ::T::Enum
1011
+ enums do
1012
+ ALIVE = new
1013
+ DEAD = new
1014
+ IGNORED = new
1015
+ end
1016
+ end
1017
+
1018
+ class Spoom::Deadcode::ERB < ::Erubi::Engine
1019
+ sig { params(input: T.untyped, properties: T.untyped).void }
1020
+ def initialize(input, properties = T.unsafe(nil)); end
1021
+
1022
+ private
1023
+
1024
+ sig { override.params(code: T.untyped).void }
1025
+ def add_code(code); end
1026
+
1027
+ sig { override.params(indicator: T.untyped, code: T.untyped).void }
1028
+ def add_expression(indicator, code); end
1029
+
1030
+ sig { override.params(_: T.untyped).void }
1031
+ def add_postamble(_); end
1032
+
1033
+ sig { override.params(text: T.untyped).void }
1034
+ def add_text(text); end
1035
+
1036
+ sig { params(src: T.untyped).void }
1037
+ def flush_newline_if_pending(src); end
1038
+ end
1039
+
1040
+ Spoom::Deadcode::ERB::BLOCK_EXPR = T.let(T.unsafe(nil), Regexp)
1041
+
1042
+ class Spoom::Deadcode::Index
1043
+ sig { params(model: ::Spoom::Model).void }
1044
+ def initialize(model); end
1045
+
1046
+ sig { returns(T::Array[::Spoom::Deadcode::Definition]) }
1047
+ def all_definitions; end
1048
+
1049
+ sig { returns(T::Array[::Spoom::Model::Reference]) }
1050
+ def all_references; end
1051
+
1052
+ sig { params(plugins: T::Array[::Spoom::Deadcode::Plugins::Base]).void }
1053
+ def apply_plugins!(plugins); end
1054
+
1055
+ sig { params(definition: ::Spoom::Deadcode::Definition).void }
1056
+ def define(definition); end
1057
+
1058
+ sig { returns(T::Hash[::String, T::Array[::Spoom::Deadcode::Definition]]) }
1059
+ def definitions; end
1060
+
1061
+ sig { params(name: ::String).returns(T::Array[::Spoom::Deadcode::Definition]) }
1062
+ def definitions_for_name(name); end
1063
+
1064
+ sig { void }
1065
+ def finalize!; end
1066
+
1067
+ sig { params(symbol_def: ::Spoom::Model::SymbolDef).void }
1068
+ def ignore(symbol_def); end
1069
+
1070
+ sig { params(erb: ::String, file: ::String, plugins: T::Array[::Spoom::Deadcode::Plugins::Base]).void }
1071
+ def index_erb(erb, file:, plugins: T.unsafe(nil)); end
1072
+
1073
+ sig { params(file: ::String, plugins: T::Array[::Spoom::Deadcode::Plugins::Base]).void }
1074
+ def index_file(file, plugins: T.unsafe(nil)); end
1075
+
1076
+ sig { params(rb: ::String, file: ::String, plugins: T::Array[::Spoom::Deadcode::Plugins::Base]).void }
1077
+ def index_ruby(rb, file:, plugins: T.unsafe(nil)); end
1078
+
1079
+ sig { returns(::Spoom::Model) }
1080
+ def model; end
1081
+
1082
+ sig { params(name: ::String, location: ::Spoom::Location).void }
1083
+ def reference_constant(name, location); end
1084
+
1085
+ sig { params(name: ::String, location: ::Spoom::Location).void }
1086
+ def reference_method(name, location); end
1087
+
1088
+ sig { returns(T::Hash[::String, T::Array[::Spoom::Model::Reference]]) }
1089
+ def references; end
1090
+ end
1091
+
1092
+ class Spoom::Deadcode::Index::Error < ::Spoom::Error
1093
+ sig { params(message: ::String, parent: ::Exception).void }
1094
+ def initialize(message, parent:); end
1095
+ end
1096
+
1097
+ class Spoom::Deadcode::Indexer < ::Spoom::Visitor
1098
+ sig do
1099
+ params(
1100
+ path: ::String,
1101
+ index: ::Spoom::Deadcode::Index,
1102
+ plugins: T::Array[::Spoom::Deadcode::Plugins::Base]
1103
+ ).void
1104
+ end
1105
+ def initialize(path, index, plugins: T.unsafe(nil)); end
1106
+
1107
+ sig { returns(::Spoom::Deadcode::Index) }
1108
+ def index; end
1109
+
1110
+ sig { returns(::String) }
1111
+ def path; end
1112
+
1113
+ sig { override.params(node: ::Prism::CallNode).void }
1114
+ def visit_call_node(node); end
1115
+ end
1116
+
1117
+ Spoom::Deadcode::PLUGINS_FOR_GEM = T.let(T.unsafe(nil), Hash)
1118
+ module Spoom::Deadcode::Plugins; end
1119
+
1120
+ class Spoom::Deadcode::Plugins::ActionMailer < ::Spoom::Deadcode::Plugins::Base
1121
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1122
+ def on_send(send); end
1123
+ end
1124
+
1125
+ class Spoom::Deadcode::Plugins::ActionMailerPreview < ::Spoom::Deadcode::Plugins::Base
1126
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1127
+ def on_define_method(definition); end
1128
+ end
1129
+
1130
+ class Spoom::Deadcode::Plugins::ActionPack < ::Spoom::Deadcode::Plugins::Base
1131
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1132
+ def on_define_method(definition); end
1133
+
1134
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1135
+ def on_send(send); end
1136
+ end
1137
+
1138
+ Spoom::Deadcode::Plugins::ActionPack::CALLBACKS = T.let(T.unsafe(nil), Array)
1139
+ class Spoom::Deadcode::Plugins::ActiveJob < ::Spoom::Deadcode::Plugins::Base; end
1140
+
1141
+ class Spoom::Deadcode::Plugins::ActiveModel < ::Spoom::Deadcode::Plugins::Base
1142
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1143
+ def on_send(send); end
1144
+ end
1145
+
1146
+ class Spoom::Deadcode::Plugins::ActiveRecord < ::Spoom::Deadcode::Plugins::Base
1147
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1148
+ def on_send(send); end
1149
+ end
1150
+
1151
+ Spoom::Deadcode::Plugins::ActiveRecord::ARRAY_METHODS = T.let(T.unsafe(nil), Array)
1152
+ Spoom::Deadcode::Plugins::ActiveRecord::CALLBACKS = T.let(T.unsafe(nil), Array)
1153
+ Spoom::Deadcode::Plugins::ActiveRecord::CALLBACK_CONDITIONS = T.let(T.unsafe(nil), Array)
1154
+ Spoom::Deadcode::Plugins::ActiveRecord::CRUD_METHODS = T.let(T.unsafe(nil), Array)
1155
+
1156
+ class Spoom::Deadcode::Plugins::ActiveSupport < ::Spoom::Deadcode::Plugins::Base
1157
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1158
+ def on_send(send); end
1159
+ end
1160
+
1161
+ Spoom::Deadcode::Plugins::ActiveSupport::SETUP_AND_TEARDOWN_METHODS = T.let(T.unsafe(nil), Array)
1162
+
1163
+ class Spoom::Deadcode::Plugins::Base
1164
+ abstract!
1165
+
1166
+ sig { params(index: ::Spoom::Deadcode::Index).void }
1167
+ def initialize(index); end
1168
+
1169
+ sig { returns(::Spoom::Deadcode::Index) }
1170
+ def index; end
1171
+
1172
+ sig { params(definition: ::Spoom::Model::Attr).void }
1173
+ def internal_on_define_accessor(definition); end
1174
+
1175
+ sig { params(definition: ::Spoom::Model::Class).void }
1176
+ def internal_on_define_class(definition); end
1177
+
1178
+ sig { params(definition: ::Spoom::Model::Constant).void }
1179
+ def internal_on_define_constant(definition); end
1180
+
1181
+ sig { params(definition: ::Spoom::Model::Method).void }
1182
+ def internal_on_define_method(definition); end
1183
+
1184
+ sig { params(definition: ::Spoom::Model::Module).void }
1185
+ def internal_on_define_module(definition); end
1186
+
1187
+ sig { params(definition: ::Spoom::Model::Attr).void }
1188
+ def on_define_accessor(definition); end
1189
+
1190
+ sig { params(definition: ::Spoom::Model::Class).void }
1191
+ def on_define_class(definition); end
1192
+
1193
+ sig { params(definition: ::Spoom::Model::Constant).void }
1194
+ def on_define_constant(definition); end
1195
+
1196
+ sig { params(definition: ::Spoom::Model::Method).void }
1197
+ def on_define_method(definition); end
1198
+
1199
+ sig { params(definition: ::Spoom::Model::Module).void }
1200
+ def on_define_module(definition); end
1201
+
1202
+ sig { params(send: ::Spoom::Deadcode::Send).void }
1203
+ def on_send(send); end
1204
+
1205
+ private
1206
+
1207
+ sig { params(name: ::String).returns(::String) }
1208
+ def camelize(name); end
1209
+
1210
+ sig { params(name: T.nilable(::String)).returns(T::Boolean) }
1211
+ def ignored_class_name?(name); end
1212
+
1213
+ sig { params(name: ::String).returns(T::Boolean) }
1214
+ def ignored_constant_name?(name); end
1215
+
1216
+ sig { params(name: ::String).returns(T::Boolean) }
1217
+ def ignored_method_name?(name); end
1218
+
1219
+ sig { params(name: ::String).returns(T::Boolean) }
1220
+ def ignored_module_name?(name); end
1221
+
1222
+ sig { params(name: ::String, names_variable: ::Symbol, patterns_variable: ::Symbol).returns(T::Boolean) }
1223
+ def ignored_name?(name, names_variable, patterns_variable); end
1224
+
1225
+ sig { params(definition: ::Spoom::Model::Class).returns(T::Boolean) }
1226
+ def ignored_subclass?(definition); end
1227
+
1228
+ sig { params(const: ::Symbol).returns(T::Set[::String]) }
1229
+ def names(const); end
1230
+
1231
+ sig { params(const: ::Symbol).returns(T::Array[::Regexp]) }
1232
+ def patterns(const); end
1233
+
1234
+ sig { params(definition: ::Spoom::Model::Namespace, superclass_name: ::String).returns(T::Boolean) }
1235
+ def subclass_of?(definition, superclass_name); end
1236
+
1237
+ class << self
1238
+ sig { params(names: T.any(::Regexp, ::String)).void }
1239
+ def ignore_classes_inheriting_from(*names); end
1240
+
1241
+ sig { params(names: T.any(::Regexp, ::String)).void }
1242
+ def ignore_classes_named(*names); end
1243
+
1244
+ sig { params(names: T.any(::Regexp, ::String)).void }
1245
+ def ignore_constants_named(*names); end
1246
+
1247
+ sig { params(names: T.any(::Regexp, ::String)).void }
1248
+ def ignore_methods_named(*names); end
1249
+
1250
+ sig { params(names: T.any(::Regexp, ::String)).void }
1251
+ def ignore_modules_named(*names); end
1252
+
1253
+ private
1254
+
1255
+ sig do
1256
+ params(
1257
+ names: T::Array[T.any(::Regexp, ::String)],
1258
+ names_variable: ::Symbol,
1259
+ patterns_variable: ::Symbol
1260
+ ).void
1261
+ end
1262
+ def save_names_and_patterns(names, names_variable, patterns_variable); end
1263
+ end
1264
+ end
1265
+
1266
+ class Spoom::Deadcode::Plugins::GraphQL < ::Spoom::Deadcode::Plugins::Base
1267
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1268
+ def on_send(send); end
1269
+ end
1270
+
1271
+ class Spoom::Deadcode::Plugins::Minitest < ::Spoom::Deadcode::Plugins::Base
1272
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1273
+ def on_define_method(definition); end
1274
+
1275
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1276
+ def on_send(send); end
1277
+ end
1278
+
1279
+ class Spoom::Deadcode::Plugins::Namespaces < ::Spoom::Deadcode::Plugins::Base
1280
+ sig { override.params(definition: ::Spoom::Model::Class).void }
1281
+ def on_define_class(definition); end
1282
+
1283
+ sig { override.params(definition: ::Spoom::Model::Module).void }
1284
+ def on_define_module(definition); end
1285
+
1286
+ private
1287
+
1288
+ sig { params(symbol_def: ::Spoom::Model::Namespace).returns(T::Boolean) }
1289
+ def used_as_namespace?(symbol_def); end
1290
+ end
1291
+
1292
+ class Spoom::Deadcode::Plugins::RSpec < ::Spoom::Deadcode::Plugins::Base; end
1293
+
1294
+ class Spoom::Deadcode::Plugins::Rails < ::Spoom::Deadcode::Plugins::Base
1295
+ sig { override.params(definition: ::Spoom::Model::Class).void }
1296
+ def on_define_class(definition); end
1297
+
1298
+ sig { override.params(definition: ::Spoom::Model::Module).void }
1299
+ def on_define_module(definition); end
1300
+
1301
+ private
1302
+
1303
+ sig { params(symbol_def: ::Spoom::Model::Namespace).returns(T::Boolean) }
1304
+ def file_is_helper?(symbol_def); end
1305
+ end
1306
+
1307
+ class Spoom::Deadcode::Plugins::Rake < ::Spoom::Deadcode::Plugins::Base; end
1308
+
1309
+ class Spoom::Deadcode::Plugins::Rubocop < ::Spoom::Deadcode::Plugins::Base
1310
+ sig { override.params(definition: ::Spoom::Model::Constant).void }
1311
+ def on_define_constant(definition); end
1312
+
1313
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1314
+ def on_define_method(definition); end
1315
+ end
1316
+
1317
+ Spoom::Deadcode::Plugins::Rubocop::RUBOCOP_CONSTANTS = T.let(T.unsafe(nil), Set)
1318
+
1319
+ class Spoom::Deadcode::Plugins::Ruby < ::Spoom::Deadcode::Plugins::Base
1320
+ sig { override.params(send: ::Spoom::Deadcode::Send).void }
1321
+ def on_send(send); end
1322
+
1323
+ private
1324
+
1325
+ sig { params(send: ::Spoom::Deadcode::Send, node: ::Prism::Node).void }
1326
+ def reference_symbol_as_constant(send, node); end
1327
+ end
1328
+
1329
+ class Spoom::Deadcode::Plugins::Sorbet < ::Spoom::Deadcode::Plugins::Base
1330
+ sig { override.params(definition: ::Spoom::Model::Constant).void }
1331
+ def on_define_constant(definition); end
1332
+
1333
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1334
+ def on_define_method(definition); end
1335
+
1336
+ private
1337
+
1338
+ sig { params(definition: ::Spoom::Model::Constant).returns(T::Boolean) }
1339
+ def sorbet_enum_constant?(definition); end
1340
+
1341
+ sig { params(definition: ::Spoom::Model::Constant).returns(T::Boolean) }
1342
+ def sorbet_type_member?(definition); end
1343
+ end
1344
+
1345
+ class Spoom::Deadcode::Plugins::Thor < ::Spoom::Deadcode::Plugins::Base
1346
+ sig { override.params(definition: ::Spoom::Model::Method).void }
1347
+ def on_define_method(definition); end
1348
+ end
1349
+
1350
+ class Spoom::Deadcode::Remover
1351
+ sig { params(context: ::Spoom::Context).void }
1352
+ def initialize(context); end
1353
+
1354
+ sig { params(kind: T.nilable(::Spoom::Deadcode::Definition::Kind), location: ::Spoom::Location).returns(::String) }
1355
+ def remove_location(kind, location); end
1356
+ end
1357
+
1358
+ class Spoom::Deadcode::Remover::Error < ::Spoom::Error; end
1359
+
1360
+ class Spoom::Deadcode::Remover::NodeContext
1361
+ sig do
1362
+ params(
1363
+ source: ::String,
1364
+ comments: T::Hash[::Integer, ::Prism::Comment],
1365
+ node: ::Prism::Node,
1366
+ nesting: T::Array[::Prism::Node]
1367
+ ).void
1368
+ end
1369
+ def initialize(source, comments, node, nesting); end
1370
+
1371
+ sig { params(node: ::Prism::Node).returns(T::Array[::Prism::Comment]) }
1372
+ def attached_comments(node); end
1373
+
1374
+ sig { returns(T.nilable(::Prism::CallNode)) }
1375
+ def attached_sig; end
1376
+
1377
+ sig { returns(T::Array[::Prism::Node]) }
1378
+ def attached_sigs; end
1379
+
1380
+ sig { returns(T::Hash[::Integer, ::Prism::Comment]) }
1381
+ def comments; end
1382
+
1383
+ sig { params(start_line: ::Integer, end_line: ::Integer).returns(T::Array[::Prism::Comment]) }
1384
+ def comments_between_lines(start_line, end_line); end
1385
+
1386
+ sig { returns(T::Array[::Prism::Node]) }
1387
+ def nesting; end
1388
+
1389
+ def nesting=(_arg0); end
1390
+
1391
+ sig { returns(T.nilable(::Prism::Node)) }
1392
+ def next_node; end
1393
+
1394
+ sig { returns(T::Array[::Prism::Node]) }
1395
+ def next_nodes; end
1396
+
1397
+ sig { returns(::Prism::Node) }
1398
+ def node; end
1399
+
1400
+ sig { returns(::Spoom::Deadcode::Remover::NodeContext) }
1401
+ def parent_context; end
1402
+
1403
+ sig { returns(::Prism::Node) }
1404
+ def parent_node; end
1405
+
1406
+ sig { returns(T.nilable(::Prism::Node)) }
1407
+ def previous_node; end
1408
+
1409
+ sig { returns(T::Array[::Prism::Node]) }
1410
+ def previous_nodes; end
1411
+
1412
+ sig { returns(T.nilable(::Spoom::Deadcode::Remover::NodeContext)) }
1413
+ def sclass_context; end
1414
+
1415
+ sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
1416
+ def sorbet_extend_sig?(node); end
1417
+
1418
+ sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
1419
+ def sorbet_signature?(node); end
1420
+ end
1421
+
1422
+ class Spoom::Deadcode::Remover::NodeFinder < ::Spoom::Visitor
1423
+ sig { params(location: ::Spoom::Location, kind: T.nilable(::Spoom::Deadcode::Definition::Kind)).void }
1424
+ def initialize(location, kind); end
1425
+
1426
+ sig { returns(T.nilable(::Prism::Node)) }
1427
+ def node; end
1428
+
1429
+ sig { returns(T::Array[::Prism::Node]) }
1430
+ def nodes_nesting; end
1431
+
1432
+ sig { override.params(node: T.nilable(::Prism::Node)).void }
1433
+ def visit(node); end
1434
+
1435
+ class << self
1436
+ sig do
1437
+ params(
1438
+ source: ::String,
1439
+ location: ::Spoom::Location,
1440
+ kind: T.nilable(::Spoom::Deadcode::Definition::Kind)
1441
+ ).returns(::Spoom::Deadcode::Remover::NodeContext)
1442
+ end
1443
+ def find(source, location, kind); end
1444
+
1445
+ sig { params(node: ::Prism::Node, kind: ::Spoom::Deadcode::Definition::Kind).returns(T::Boolean) }
1446
+ def node_match_kind?(node, kind); end
1447
+ end
1448
+ end
1449
+
1450
+ class Spoom::Deadcode::Remover::NodeRemover
1451
+ sig do
1452
+ params(
1453
+ source: ::String,
1454
+ kind: T.nilable(::Spoom::Deadcode::Definition::Kind),
1455
+ location: ::Spoom::Location
1456
+ ).void
1457
+ end
1458
+ def initialize(source, kind, location); end
1459
+
1460
+ sig { void }
1461
+ def apply_edit; end
1462
+
1463
+ sig { returns(::String) }
1464
+ def new_source; end
1465
+
1466
+ private
1467
+
1468
+ sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1469
+ def delete_attr_accessor(context); end
1470
+
1471
+ sig { params(start_char: ::Integer, end_char: ::Integer).void }
1472
+ def delete_chars(start_char, end_char); end
1473
+
1474
+ sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1475
+ def delete_constant_assignment(context); end
1476
+
1477
+ sig { params(start_line: ::Integer, end_line: ::Integer).void }
1478
+ def delete_lines(start_line, end_line); end
1479
+
1480
+ sig { params(context: ::Spoom::Deadcode::Remover::NodeContext).void }
1481
+ def delete_node_and_comments_and_sigs(context); end
1482
+
1483
+ sig do
1484
+ params(
1485
+ node: ::Prism::Node,
1486
+ send_context: ::Spoom::Deadcode::Remover::NodeContext,
1487
+ was_removed: T::Boolean
1488
+ ).void
1489
+ end
1490
+ def insert_accessor(node, send_context, was_removed:); end
1491
+
1492
+ sig { params(start_char: ::Integer, end_char: ::Integer, replacement: ::String).void }
1493
+ def replace_chars(start_char, end_char, replacement); end
1494
+
1495
+ sig do
1496
+ params(
1497
+ node: ::Prism::CallNode,
1498
+ name: ::String,
1499
+ kind: T.nilable(::Spoom::Deadcode::Definition::Kind)
1500
+ ).returns(::String)
1501
+ end
1502
+ def transform_sig(node, name:, kind:); end
1503
+ end
1504
+
1505
+ class Spoom::Deadcode::Send < ::T::Struct
1506
+ const :node, ::Prism::CallNode
1507
+ const :name, ::String
1508
+ const :recv, T.nilable(::Prism::Node), default: T.unsafe(nil)
1509
+ const :args, T::Array[::Prism::Node], default: T.unsafe(nil)
1510
+ const :block, T.nilable(::Prism::Node), default: T.unsafe(nil)
1511
+ const :location, ::Spoom::Location
1512
+
1513
+ sig do
1514
+ type_parameters(:T)
1515
+ .params(
1516
+ arg_type: T::Class[T.type_parameter(:T)],
1517
+ block: T.proc.params(arg: T.type_parameter(:T)).void
1518
+ ).void
1519
+ end
1520
+ def each_arg(arg_type, &block); end
1521
+
1522
+ sig { params(block: T.proc.params(key: ::Prism::Node, value: T.nilable(::Prism::Node)).void).void }
1523
+ def each_arg_assoc(&block); end
1524
+
1525
+ class << self
1526
+ def inherited(s); end
1527
+ end
1528
+ end
1529
+
1530
+ class Spoom::Error < ::StandardError; end
1531
+
1532
+ class Spoom::ExecResult < ::T::Struct
1533
+ const :out, ::String
1534
+ const :err, T.nilable(::String)
1535
+ const :status, T::Boolean
1536
+ const :exit_code, ::Integer
1537
+
1538
+ sig { returns(::String) }
1539
+ def to_s; end
1540
+
1541
+ class << self
1542
+ def inherited(s); end
1543
+ end
1544
+ end
1545
+
1546
+ class Spoom::FileCollector
1547
+ sig do
1548
+ params(
1549
+ allow_extensions: T::Array[::String],
1550
+ allow_mime_types: T::Array[::String],
1551
+ exclude_patterns: T::Array[::String]
1552
+ ).void
1553
+ end
1554
+ def initialize(allow_extensions: T.unsafe(nil), allow_mime_types: T.unsafe(nil), exclude_patterns: T.unsafe(nil)); end
1555
+
1556
+ sig { returns(T::Array[::String]) }
1557
+ def files; end
1558
+
1559
+ sig { params(path: ::String).void }
1560
+ def visit_path(path); end
1561
+
1562
+ sig { params(paths: T::Array[::String]).void }
1563
+ def visit_paths(paths); end
1564
+
1565
+ private
1566
+
1567
+ sig { params(path: ::String).returns(::String) }
1568
+ def clean_path(path); end
1569
+
1570
+ sig { params(path: ::String).returns(T::Boolean) }
1571
+ def excluded_file?(path); end
1572
+
1573
+ sig { params(path: ::String).returns(T::Boolean) }
1574
+ def excluded_path?(path); end
1575
+
1576
+ sig { params(path: ::String).returns(T.nilable(::String)) }
1577
+ def mime_type_for(path); end
1578
+
1579
+ sig { params(path: ::String).void }
1580
+ def visit_directory(path); end
1581
+
1582
+ sig { params(path: ::String).void }
1583
+ def visit_file(path); end
1584
+ end
1585
+
1586
+ class Spoom::FileTree
1587
+ sig { params(paths: T::Enumerable[::String]).void }
1588
+ def initialize(paths = T.unsafe(nil)); end
1589
+
1590
+ sig { params(path: ::String).returns(::Spoom::FileTree::Node) }
1591
+ def add_path(path); end
1592
+
1593
+ sig { params(paths: T::Enumerable[::String]).void }
1594
+ def add_paths(paths); end
1595
+
1596
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
1597
+ def nodes; end
1598
+
1599
+ sig { params(context: ::Spoom::Context).returns(T::Hash[::Spoom::FileTree::Node, ::Float]) }
1600
+ def nodes_strictness_scores(context); end
1601
+
1602
+ sig { returns(T::Array[::String]) }
1603
+ def paths; end
1604
+
1605
+ sig { params(context: ::Spoom::Context).returns(T::Hash[::String, ::Float]) }
1606
+ def paths_strictness_scores(context); end
1607
+
1608
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean).void }
1609
+ def print(out: T.unsafe(nil), colors: T.unsafe(nil)); end
1610
+
1611
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
1612
+ def roots; end
1613
+ end
1614
+
1615
+ class Spoom::FileTree::CollectNodes < ::Spoom::FileTree::Visitor
1616
+ sig { void }
1617
+ def initialize; end
1618
+
1619
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
1620
+ def nodes; end
1621
+
1622
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
1623
+ def visit_node(node); end
1624
+ end
1625
+
1626
+ class Spoom::FileTree::CollectScores < ::Spoom::FileTree::CollectStrictnesses
1627
+ sig { params(context: ::Spoom::Context).void }
1628
+ def initialize(context); end
1629
+
1630
+ sig { returns(T::Hash[::Spoom::FileTree::Node, ::Float]) }
1631
+ def scores; end
1632
+
1633
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
1634
+ def visit_node(node); end
1635
+
1636
+ private
1637
+
1638
+ sig { params(node: ::Spoom::FileTree::Node).returns(::Float) }
1639
+ def node_score(node); end
1640
+
1641
+ sig { params(strictness: T.nilable(::String)).returns(::Float) }
1642
+ def strictness_score(strictness); end
1643
+ end
1644
+
1645
+ class Spoom::FileTree::CollectStrictnesses < ::Spoom::FileTree::Visitor
1646
+ sig { params(context: ::Spoom::Context).void }
1647
+ def initialize(context); end
1648
+
1649
+ sig { returns(T::Hash[::Spoom::FileTree::Node, T.nilable(::String)]) }
1650
+ def strictnesses; end
1651
+
1652
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
1653
+ def visit_node(node); end
1654
+ end
1655
+
1656
+ class Spoom::FileTree::Node < ::T::Struct
1657
+ const :parent, T.nilable(::Spoom::FileTree::Node)
1658
+ const :name, ::String
1659
+ const :children, T::Hash[::String, ::Spoom::FileTree::Node], default: T.unsafe(nil)
1660
+
1661
+ sig { returns(::String) }
1662
+ def path; end
1663
+
1664
+ class << self
1665
+ def inherited(s); end
1666
+ end
1667
+ end
1668
+
1669
+ class Spoom::FileTree::Printer < ::Spoom::FileTree::Visitor
1670
+ sig do
1671
+ params(
1672
+ strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
1673
+ out: T.any(::IO, ::StringIO),
1674
+ colors: T::Boolean
1675
+ ).void
1676
+ end
1677
+ def initialize(strictnesses, out: T.unsafe(nil), colors: T.unsafe(nil)); end
1678
+
1679
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
1680
+ def visit_node(node); end
1681
+
1682
+ private
1683
+
1684
+ sig { params(strictness: T.nilable(::String)).returns(::Spoom::Color) }
1685
+ def strictness_color(strictness); end
1686
+ end
1687
+
1688
+ class Spoom::FileTree::Visitor
1689
+ abstract!
1690
+
1691
+ sig { params(node: ::Spoom::FileTree::Node).void }
1692
+ def visit_node(node); end
1693
+
1694
+ sig { params(nodes: T::Array[::Spoom::FileTree::Node]).void }
1695
+ def visit_nodes(nodes); end
1696
+
1697
+ sig { params(tree: ::Spoom::FileTree).void }
1698
+ def visit_tree(tree); end
1699
+ end
1700
+
1701
+ module Spoom::Git; end
1702
+
1703
+ class Spoom::Git::Commit < ::T::Struct
1704
+ const :sha, ::String
1705
+ const :time, ::Time
1706
+
1707
+ sig { returns(::Integer) }
1708
+ def timestamp; end
1709
+
1710
+ class << self
1711
+ def inherited(s); end
1712
+
1713
+ sig { params(string: ::String).returns(T.nilable(::Spoom::Git::Commit)) }
1714
+ def parse_line(string); end
1715
+ end
1716
+ end
1717
+
1718
+ module Spoom::LSP; end
1719
+
1720
+ class Spoom::LSP::Client
1721
+ sig { params(sorbet_bin: ::String, sorbet_args: ::String, path: ::String).void }
1722
+ def initialize(sorbet_bin, *sorbet_args, path: T.unsafe(nil)); end
1723
+
1724
+ sig { void }
1725
+ def close; end
1726
+
1727
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
1728
+ def definitions(uri, line, column); end
1729
+
1730
+ sig { params(uri: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
1731
+ def document_symbols(uri); end
1732
+
1733
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T.nilable(::Spoom::LSP::Hover)) }
1734
+ def hover(uri, line, column); end
1735
+
1736
+ sig { returns(::Integer) }
1737
+ def next_id; end
1738
+
1739
+ sig { params(workspace_path: ::String).void }
1740
+ def open(workspace_path); end
1741
+
1742
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
1743
+ def read; end
1744
+
1745
+ sig { returns(T.nilable(::String)) }
1746
+ def read_raw; end
1747
+
1748
+ sig do
1749
+ params(
1750
+ uri: ::String,
1751
+ line: ::Integer,
1752
+ column: ::Integer,
1753
+ include_decl: T::Boolean
1754
+ ).returns(T::Array[::Spoom::LSP::Location])
1755
+ end
1756
+ def references(uri, line, column, include_decl = T.unsafe(nil)); end
1757
+
1758
+ sig { params(message: ::Spoom::LSP::Message).returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
1759
+ def send(message); end
1760
+
1761
+ sig { params(json_string: ::String).void }
1762
+ def send_raw(json_string); end
1763
+
1764
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::SignatureHelp]) }
1765
+ def signatures(uri, line, column); end
1766
+
1767
+ sig { params(query: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
1768
+ def symbols(query); end
1769
+
1770
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
1771
+ def type_definitions(uri, line, column); end
1772
+ end
1773
+
1774
+ class Spoom::LSP::Diagnostic < ::T::Struct
1775
+ include ::Spoom::LSP::PrintableSymbol
1776
+
1777
+ const :range, ::Spoom::LSP::Range
1778
+ const :code, ::Integer
1779
+ const :message, ::String
1780
+ const :information, ::Object
1781
+
1782
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1783
+ def accept_printer(printer); end
1784
+
1785
+ sig { returns(::String) }
1786
+ def to_s; end
1787
+
1788
+ class << self
1789
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Diagnostic) }
1790
+ def from_json(json); end
1791
+
1792
+ def inherited(s); end
1793
+ end
1794
+ end
1795
+
1796
+ class Spoom::LSP::DocumentSymbol < ::T::Struct
1797
+ include ::Spoom::LSP::PrintableSymbol
1798
+
1799
+ const :name, ::String
1800
+ const :detail, T.nilable(::String)
1801
+ const :kind, ::Integer
1802
+ const :location, T.nilable(::Spoom::LSP::Location)
1803
+ const :range, T.nilable(::Spoom::LSP::Range)
1804
+ const :children, T::Array[::Spoom::LSP::DocumentSymbol]
1805
+
1806
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1807
+ def accept_printer(printer); end
1808
+
1809
+ sig { returns(::String) }
1810
+ def kind_string; end
1811
+
1812
+ sig { returns(::String) }
1813
+ def to_s; end
1814
+
1815
+ class << self
1816
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::DocumentSymbol) }
1817
+ def from_json(json); end
1818
+
1819
+ def inherited(s); end
1820
+ end
1821
+ end
1822
+
1823
+ Spoom::LSP::DocumentSymbol::SYMBOL_KINDS = T.let(T.unsafe(nil), Hash)
1824
+ class Spoom::LSP::Error < ::Spoom::Error; end
1825
+ class Spoom::LSP::Error::AlreadyOpen < ::Spoom::LSP::Error; end
1826
+ class Spoom::LSP::Error::BadHeaders < ::Spoom::LSP::Error; end
1827
+
1828
+ class Spoom::LSP::Error::Diagnostics < ::Spoom::LSP::Error
1829
+ sig { params(uri: ::String, diagnostics: T::Array[::Spoom::LSP::Diagnostic]).void }
1830
+ def initialize(uri, diagnostics); end
1831
+
1832
+ sig { returns(T::Array[::Spoom::LSP::Diagnostic]) }
1833
+ def diagnostics; end
1834
+
1835
+ sig { returns(::String) }
1836
+ def uri; end
1837
+
1838
+ class << self
1839
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Error::Diagnostics) }
1840
+ def from_json(json); end
1841
+ end
1842
+ end
1843
+
1844
+ class Spoom::LSP::Hover < ::T::Struct
1845
+ include ::Spoom::LSP::PrintableSymbol
1846
+
1847
+ const :contents, ::String
1848
+ const :range, T.nilable(T::Range[T.untyped])
1849
+
1850
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1851
+ def accept_printer(printer); end
1852
+
1853
+ sig { returns(::String) }
1854
+ def to_s; end
1855
+
1856
+ class << self
1857
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) }
1858
+ def from_json(json); end
1859
+
1860
+ def inherited(s); end
1861
+ end
1862
+ end
1863
+
1864
+ class Spoom::LSP::Location < ::T::Struct
1865
+ include ::Spoom::LSP::PrintableSymbol
1866
+
1867
+ const :uri, ::String
1868
+ const :range, ::Spoom::LSP::Range
1869
+
1870
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1871
+ def accept_printer(printer); end
1872
+
1873
+ sig { returns(::String) }
1874
+ def to_s; end
1875
+
1876
+ class << self
1877
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Location) }
1878
+ def from_json(json); end
1879
+
1880
+ def inherited(s); end
1881
+ end
1882
+ end
1883
+
1884
+ class Spoom::LSP::Message
1885
+ sig { void }
1886
+ def initialize; end
1887
+
1888
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
1889
+ def as_json; end
1890
+
1891
+ sig { params(args: T.untyped).returns(::String) }
1892
+ def to_json(*args); end
1893
+ end
1894
+
1895
+ class Spoom::LSP::Notification < ::Spoom::LSP::Message
1896
+ sig { params(method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
1897
+ def initialize(method, params); end
1898
+
1899
+ sig { returns(::String) }
1900
+ def method; end
1901
+
1902
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
1903
+ def params; end
1904
+ end
1905
+
1906
+ class Spoom::LSP::Position < ::T::Struct
1907
+ include ::Spoom::LSP::PrintableSymbol
1908
+
1909
+ const :line, ::Integer
1910
+ const :char, ::Integer
1911
+
1912
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1913
+ def accept_printer(printer); end
1914
+
1915
+ sig { returns(::String) }
1916
+ def to_s; end
1917
+
1918
+ class << self
1919
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) }
1920
+ def from_json(json); end
1921
+
1922
+ def inherited(s); end
1923
+ end
1924
+ end
1925
+
1926
+ module Spoom::LSP::PrintableSymbol
1927
+ interface!
1928
+
1929
+ sig { abstract.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1930
+ def accept_printer(printer); end
1931
+ end
1932
+
1933
+ class Spoom::LSP::Range < ::T::Struct
1934
+ include ::Spoom::LSP::PrintableSymbol
1935
+
1936
+ const :start, ::Spoom::LSP::Position
1937
+ const :end, ::Spoom::LSP::Position
1938
+
1939
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1940
+ def accept_printer(printer); end
1941
+
1942
+ sig { returns(::String) }
1943
+ def to_s; end
1944
+
1945
+ class << self
1946
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) }
1947
+ def from_json(json); end
1948
+
1949
+ def inherited(s); end
1950
+ end
1951
+ end
1952
+
1953
+ class Spoom::LSP::Request < ::Spoom::LSP::Message
1954
+ sig { params(id: ::Integer, method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
1955
+ def initialize(id, method, params); end
1956
+
1957
+ sig { returns(::Integer) }
1958
+ def id; end
1959
+
1960
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
1961
+ def params; end
1962
+ end
1963
+
1964
+ class Spoom::LSP::ResponseError < ::Spoom::LSP::Error
1965
+ sig { params(code: ::Integer, message: ::String, data: T::Hash[T.untyped, T.untyped]).void }
1966
+ def initialize(code, message, data); end
1967
+
1968
+ sig { returns(::Integer) }
1969
+ def code; end
1970
+
1971
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
1972
+ def data; end
1973
+
1974
+ class << self
1975
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::ResponseError) }
1976
+ def from_json(json); end
1977
+ end
1978
+ end
1979
+
1980
+ class Spoom::LSP::SignatureHelp < ::T::Struct
1981
+ include ::Spoom::LSP::PrintableSymbol
1982
+
1983
+ const :label, T.nilable(::String)
1984
+ const :doc, ::Object
1985
+ const :params, T::Array[T.untyped]
1986
+
1987
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
1988
+ def accept_printer(printer); end
1989
+
1990
+ sig { returns(::String) }
1991
+ def to_s; end
1992
+
1993
+ class << self
1994
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::SignatureHelp) }
1995
+ def from_json(json); end
1996
+
1997
+ def inherited(s); end
1998
+ end
1999
+ end
2000
+
2001
+ class Spoom::LSP::SymbolPrinter < ::Spoom::Printer
2002
+ sig do
2003
+ params(
2004
+ out: T.any(::IO, ::StringIO),
2005
+ colors: T::Boolean,
2006
+ indent_level: ::Integer,
2007
+ prefix: T.nilable(::String)
2008
+ ).void
2009
+ end
2010
+ def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil), prefix: T.unsafe(nil)); end
2011
+
2012
+ sig { params(uri: ::String).returns(::String) }
2013
+ def clean_uri(uri); end
2014
+
2015
+ sig { returns(T.nilable(::String)) }
2016
+ def prefix; end
2017
+
2018
+ def prefix=(_arg0); end
2019
+
2020
+ sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
2021
+ def print_list(objects); end
2022
+
2023
+ sig { params(object: T.nilable(::Spoom::LSP::PrintableSymbol)).void }
2024
+ def print_object(object); end
2025
+
2026
+ sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
2027
+ def print_objects(objects); end
2028
+
2029
+ sig { returns(T::Set[::Integer]) }
2030
+ def seen; end
2031
+ end
2032
+
2033
+ class Spoom::Location
2034
+ include ::Comparable
2035
+
2036
+ sig do
2037
+ params(
2038
+ file: ::String,
2039
+ start_line: T.nilable(::Integer),
2040
+ start_column: T.nilable(::Integer),
2041
+ end_line: T.nilable(::Integer),
2042
+ end_column: T.nilable(::Integer)
2043
+ ).void
2044
+ end
2045
+ def initialize(file, start_line: T.unsafe(nil), start_column: T.unsafe(nil), end_line: T.unsafe(nil), end_column: T.unsafe(nil)); end
2046
+
2047
+ sig { override.params(other: ::BasicObject).returns(T.nilable(::Integer)) }
2048
+ def <=>(other); end
2049
+
2050
+ def end_column; end
2051
+ def end_line; end
2052
+
2053
+ sig { returns(::String) }
2054
+ def file; end
2055
+
2056
+ sig { params(other: ::Spoom::Location).returns(T::Boolean) }
2057
+ def include?(other); end
2058
+
2059
+ def start_column; end
2060
+
2061
+ sig { returns(T.nilable(::Integer)) }
2062
+ def start_line; end
2063
+
2064
+ sig { returns(::String) }
2065
+ def to_s; end
2066
+
2067
+ class << self
2068
+ sig { params(file: ::String, location: ::Prism::Location).returns(::Spoom::Location) }
2069
+ def from_prism(file, location); end
2070
+
2071
+ sig { params(location_string: ::String).returns(::Spoom::Location) }
2072
+ def from_string(location_string); end
2073
+ end
2074
+ end
2075
+
2076
+ class Spoom::Location::LocationError < ::Spoom::Error; end
2077
+
2078
+ class Spoom::Model
2079
+ sig { void }
2080
+ def initialize; end
2081
+
2082
+ sig { params(full_name: ::String).returns(::Spoom::Model::Symbol) }
2083
+ def [](full_name); end
2084
+
2085
+ sig { void }
2086
+ def finalize!; end
2087
+
2088
+ sig { params(full_name: ::String).returns(::Spoom::Model::Symbol) }
2089
+ def register_symbol(full_name); end
2090
+
2091
+ sig { params(full_name: ::String, context: ::Spoom::Model::Symbol).returns(::Spoom::Model::Symbol) }
2092
+ def resolve_symbol(full_name, context:); end
2093
+
2094
+ sig { params(symbol: ::Spoom::Model::Symbol).returns(T::Array[::Spoom::Model::Symbol]) }
2095
+ def subtypes(symbol); end
2096
+
2097
+ sig { params(symbol: ::Spoom::Model::Symbol).returns(T::Array[::Spoom::Model::Symbol]) }
2098
+ def supertypes(symbol); end
2099
+
2100
+ sig { returns(T::Hash[::String, ::Spoom::Model::Symbol]) }
2101
+ def symbols; end
2102
+
2103
+ sig { returns(Spoom::Poset[::Spoom::Model::Symbol]) }
2104
+ def symbols_hierarchy; end
2105
+
2106
+ private
2107
+
2108
+ sig { void }
2109
+ def compute_symbols_hierarchy!; end
2110
+ end
2111
+
2112
+ class Spoom::Model::Attr < ::Spoom::Model::Property
2113
+ abstract!
2114
+ end
2115
+
2116
+ class Spoom::Model::AttrAccessor < ::Spoom::Model::Attr; end
2117
+ class Spoom::Model::AttrReader < ::Spoom::Model::Attr; end
2118
+ class Spoom::Model::AttrWriter < ::Spoom::Model::Attr; end
2119
+
2120
+ class Spoom::Model::Builder < ::Spoom::Model::NamespaceVisitor
2121
+ sig { params(model: ::Spoom::Model, file: ::String).void }
2122
+ def initialize(model, file); end
2123
+
2124
+ sig { override.params(node: ::Prism::CallNode).void }
2125
+ def visit_call_node(node); end
2126
+
2127
+ sig { override.params(node: ::Prism::ClassNode).void }
2128
+ def visit_class_node(node); end
2129
+
2130
+ sig { override.params(node: ::Prism::ConstantPathWriteNode).void }
2131
+ def visit_constant_path_write_node(node); end
2132
+
2133
+ sig { override.params(node: ::Prism::ConstantWriteNode).void }
2134
+ def visit_constant_write_node(node); end
2135
+
2136
+ sig { override.params(node: ::Prism::DefNode).void }
2137
+ def visit_def_node(node); end
2138
+
2139
+ sig { override.params(node: ::Prism::ModuleNode).void }
2140
+ def visit_module_node(node); end
2141
+
2142
+ sig { override.params(node: ::Prism::MultiWriteNode).void }
2143
+ def visit_multi_write_node(node); end
2144
+
2145
+ sig { override.params(node: ::Prism::SingletonClassNode).void }
2146
+ def visit_singleton_class_node(node); end
2147
+
2148
+ private
2149
+
2150
+ sig { returns(T::Array[::Spoom::Model::Sig]) }
2151
+ def collect_sigs; end
2152
+
2153
+ sig { returns(::Spoom::Model::Visibility) }
2154
+ def current_visibility; end
2155
+
2156
+ sig { params(node: ::Prism::Node).returns(T::Array[::Spoom::Model::Comment]) }
2157
+ def node_comments(node); end
2158
+
2159
+ sig { params(node: ::Prism::Node).returns(::Spoom::Location) }
2160
+ def node_location(node); end
2161
+ end
2162
+
2163
+ class Spoom::Model::Class < ::Spoom::Model::Namespace
2164
+ sig do
2165
+ params(
2166
+ symbol: ::Spoom::Model::Symbol,
2167
+ owner: T.nilable(::Spoom::Model::Namespace),
2168
+ location: ::Spoom::Location,
2169
+ superclass_name: T.nilable(::String),
2170
+ comments: T::Array[::Spoom::Model::Comment]
2171
+ ).void
2172
+ end
2173
+ def initialize(symbol, owner:, location:, superclass_name: T.unsafe(nil), comments: T.unsafe(nil)); end
2174
+
2175
+ sig { returns(T.nilable(::String)) }
2176
+ def superclass_name; end
2177
+
2178
+ def superclass_name=(_arg0); end
2179
+ end
2180
+
2181
+ class Spoom::Model::Comment
2182
+ sig { params(string: ::String, location: ::Spoom::Location).void }
2183
+ def initialize(string, location); end
2184
+
2185
+ sig { returns(::Spoom::Location) }
2186
+ def location; end
2187
+
2188
+ sig { returns(::String) }
2189
+ def string; end
2190
+ end
2191
+
2192
+ class Spoom::Model::Constant < ::Spoom::Model::SymbolDef
2193
+ sig do
2194
+ params(
2195
+ symbol: ::Spoom::Model::Symbol,
2196
+ owner: T.nilable(::Spoom::Model::Namespace),
2197
+ location: ::Spoom::Location,
2198
+ value: ::String,
2199
+ comments: T::Array[::Spoom::Model::Comment]
2200
+ ).void
2201
+ end
2202
+ def initialize(symbol, owner:, location:, value:, comments: T.unsafe(nil)); end
2203
+
2204
+ sig { returns(::String) }
2205
+ def value; end
2206
+ end
2207
+
2208
+ class Spoom::Model::Error < ::Spoom::Error; end
2209
+ class Spoom::Model::Extend < ::Spoom::Model::Mixin; end
2210
+ class Spoom::Model::Include < ::Spoom::Model::Mixin; end
2211
+ class Spoom::Model::Method < ::Spoom::Model::Property; end
2212
+
2213
+ class Spoom::Model::Mixin
2214
+ abstract!
2215
+
2216
+ sig { params(name: ::String).void }
2217
+ def initialize(name); end
2218
+
2219
+ sig { returns(::String) }
2220
+ def name; end
2221
+ end
2222
+
2223
+ class Spoom::Model::Module < ::Spoom::Model::Namespace; end
2224
+
2225
+ class Spoom::Model::Namespace < ::Spoom::Model::SymbolDef
2226
+ abstract!
2227
+
2228
+ sig do
2229
+ params(
2230
+ symbol: ::Spoom::Model::Symbol,
2231
+ owner: T.nilable(::Spoom::Model::Namespace),
2232
+ location: ::Spoom::Location,
2233
+ comments: T::Array[::Spoom::Model::Comment]
2234
+ ).void
2235
+ end
2236
+ def initialize(symbol, owner:, location:, comments: T.unsafe(nil)); end
2237
+
2238
+ sig { returns(T::Array[::Spoom::Model::SymbolDef]) }
2239
+ def children; end
2240
+
2241
+ sig { returns(T::Array[::Spoom::Model::Mixin]) }
2242
+ def mixins; end
2243
+ end
2244
+
2245
+ class Spoom::Model::NamespaceVisitor < ::Spoom::Visitor
2246
+ abstract!
2247
+
2248
+ sig { void }
2249
+ def initialize; end
2250
+
2251
+ sig { override.params(node: T.nilable(::Prism::Node)).void }
2252
+ def visit(node); end
2253
+ end
2254
+
2255
+ class Spoom::Model::Prepend < ::Spoom::Model::Mixin; end
2256
+
2257
+ class Spoom::Model::Property < ::Spoom::Model::SymbolDef
2258
+ abstract!
2259
+
2260
+ sig do
2261
+ params(
2262
+ symbol: ::Spoom::Model::Symbol,
2263
+ owner: T.nilable(::Spoom::Model::Namespace),
2264
+ location: ::Spoom::Location,
2265
+ visibility: ::Spoom::Model::Visibility,
2266
+ sigs: T::Array[::Spoom::Model::Sig],
2267
+ comments: T::Array[::Spoom::Model::Comment]
2268
+ ).void
2269
+ end
2270
+ def initialize(symbol, owner:, location:, visibility:, sigs: T.unsafe(nil), comments: T.unsafe(nil)); end
2271
+
2272
+ sig { returns(T::Array[::Spoom::Model::Sig]) }
2273
+ def sigs; end
2274
+
2275
+ sig { returns(::Spoom::Model::Visibility) }
2276
+ def visibility; end
2277
+ end
2278
+
2279
+ class Spoom::Model::Reference < ::T::Struct
2280
+ const :kind, ::Spoom::Model::Reference::Kind
2281
+ const :name, ::String
2282
+ const :location, ::Spoom::Location
2283
+
2284
+ sig { returns(T::Boolean) }
2285
+ def constant?; end
2286
+
2287
+ sig { returns(T::Boolean) }
2288
+ def method?; end
2289
+
2290
+ class << self
2291
+ sig { params(name: ::String, location: ::Spoom::Location).returns(::Spoom::Model::Reference) }
2292
+ def constant(name, location); end
2293
+
2294
+ def inherited(s); end
2295
+
2296
+ sig { params(name: ::String, location: ::Spoom::Location).returns(::Spoom::Model::Reference) }
2297
+ def method(name, location); end
2298
+ end
2299
+ end
2300
+
2301
+ class Spoom::Model::Reference::Kind < ::T::Enum
2302
+ enums do
2303
+ Constant = new
2304
+ Method = new
2305
+ end
2306
+ end
2307
+
2308
+ class Spoom::Model::ReferencesVisitor < ::Spoom::Visitor
2309
+ sig { params(file: ::String).void }
2310
+ def initialize(file); end
2311
+
2312
+ sig { returns(T::Array[::Spoom::Model::Reference]) }
2313
+ def references; end
2314
+
2315
+ sig { override.params(node: ::Prism::AliasMethodNode).void }
2316
+ def visit_alias_method_node(node); end
2317
+
2318
+ sig { override.params(node: ::Prism::AndNode).void }
2319
+ def visit_and_node(node); end
2320
+
2321
+ sig { override.params(node: ::Prism::BlockArgumentNode).void }
2322
+ def visit_block_argument_node(node); end
2323
+
2324
+ sig { override.params(node: ::Prism::CallAndWriteNode).void }
2325
+ def visit_call_and_write_node(node); end
2326
+
2327
+ sig { override.params(node: ::Prism::CallNode).void }
2328
+ def visit_call_node(node); end
2329
+
2330
+ sig { override.params(node: ::Prism::CallOperatorWriteNode).void }
2331
+ def visit_call_operator_write_node(node); end
2332
+
2333
+ sig { override.params(node: ::Prism::CallOrWriteNode).void }
2334
+ def visit_call_or_write_node(node); end
2335
+
2336
+ sig { override.params(node: ::Prism::ClassNode).void }
2337
+ def visit_class_node(node); end
2338
+
2339
+ sig { override.params(node: ::Prism::ConstantAndWriteNode).void }
2340
+ def visit_constant_and_write_node(node); end
2341
+
2342
+ sig { override.params(node: ::Prism::ConstantOperatorWriteNode).void }
2343
+ def visit_constant_operator_write_node(node); end
2344
+
2345
+ sig { override.params(node: ::Prism::ConstantOrWriteNode).void }
2346
+ def visit_constant_or_write_node(node); end
2347
+
2348
+ sig { override.params(node: ::Prism::ConstantPathNode).void }
2349
+ def visit_constant_path_node(node); end
2350
+
2351
+ sig { override.params(node: ::Prism::ConstantPathWriteNode).void }
2352
+ def visit_constant_path_write_node(node); end
2353
+
2354
+ sig { override.params(node: ::Prism::ConstantReadNode).void }
2355
+ def visit_constant_read_node(node); end
2356
+
2357
+ sig { override.params(node: ::Prism::ConstantWriteNode).void }
2358
+ def visit_constant_write_node(node); end
2359
+
2360
+ sig { override.params(node: ::Prism::LocalVariableAndWriteNode).void }
2361
+ def visit_local_variable_and_write_node(node); end
2362
+
2363
+ sig { override.params(node: ::Prism::LocalVariableOperatorWriteNode).void }
2364
+ def visit_local_variable_operator_write_node(node); end
2365
+
2366
+ sig { override.params(node: ::Prism::LocalVariableOrWriteNode).void }
2367
+ def visit_local_variable_or_write_node(node); end
2368
+
2369
+ sig { override.params(node: ::Prism::LocalVariableWriteNode).void }
2370
+ def visit_local_variable_write_node(node); end
2371
+
2372
+ sig { override.params(node: ::Prism::ModuleNode).void }
2373
+ def visit_module_node(node); end
2374
+
2375
+ sig { override.params(node: ::Prism::MultiWriteNode).void }
2376
+ def visit_multi_write_node(node); end
2377
+
2378
+ sig { override.params(node: ::Prism::OrNode).void }
2379
+ def visit_or_node(node); end
2380
+
2381
+ private
2382
+
2383
+ sig { params(node: ::Prism::Node).returns(::Spoom::Location) }
2384
+ def node_location(node); end
2385
+
2386
+ sig { params(name: ::String, node: ::Prism::Node).void }
2387
+ def reference_constant(name, node); end
2388
+
2389
+ sig { params(name: ::String, node: ::Prism::Node).void }
2390
+ def reference_method(name, node); end
2391
+ end
2392
+
2393
+ class Spoom::Model::Sig
2394
+ sig { params(string: ::String).void }
2395
+ def initialize(string); end
2396
+
2397
+ sig { returns(::String) }
2398
+ def string; end
2399
+ end
2400
+
2401
+ class Spoom::Model::SingletonClass < ::Spoom::Model::Namespace; end
2402
+
2403
+ class Spoom::Model::Symbol
2404
+ sig { params(full_name: ::String).void }
2405
+ def initialize(full_name); end
2406
+
2407
+ sig { returns(T::Array[::Spoom::Model::SymbolDef]) }
2408
+ def definitions; end
2409
+
2410
+ sig { returns(::String) }
2411
+ def full_name; end
2412
+
2413
+ sig { returns(::String) }
2414
+ def name; end
2415
+
2416
+ sig { returns(::String) }
2417
+ def to_s; end
2418
+ end
2419
+
2420
+ class Spoom::Model::SymbolDef
2421
+ abstract!
2422
+
2423
+ sig do
2424
+ params(
2425
+ symbol: ::Spoom::Model::Symbol,
2426
+ owner: T.nilable(::Spoom::Model::Namespace),
2427
+ location: ::Spoom::Location,
2428
+ comments: T::Array[::Spoom::Model::Comment]
2429
+ ).void
2430
+ end
2431
+ def initialize(symbol, owner:, location:, comments:); end
2432
+
2433
+ sig { returns(T::Array[::Spoom::Model::Comment]) }
2434
+ def comments; end
2435
+
2436
+ sig { returns(::String) }
2437
+ def full_name; end
2438
+
2439
+ sig { returns(::Spoom::Location) }
2440
+ def location; end
2441
+
2442
+ sig { returns(::String) }
2443
+ def name; end
2444
+
2445
+ sig { returns(T.nilable(::Spoom::Model::Namespace)) }
2446
+ def owner; end
2447
+
2448
+ sig { returns(::Spoom::Model::Symbol) }
2449
+ def symbol; end
2450
+ end
2451
+
2452
+ class Spoom::Model::UnresolvedSymbol < ::Spoom::Model::Symbol
2453
+ sig { override.returns(::String) }
2454
+ def to_s; end
2455
+ end
2456
+
2457
+ class Spoom::Model::Visibility < ::T::Enum
2458
+ enums do
2459
+ Private = new
2460
+ Protected = new
2461
+ Public = new
2462
+ end
2463
+ end
2464
+
2465
+ class Spoom::ParseError < ::Spoom::Error; end
2466
+
2467
+ class Spoom::Poset
2468
+ sig { void }
2469
+ def initialize; end
2470
+
2471
+ sig { params(value: T.untyped).returns(Spoom::Poset::Element[T.untyped]) }
2472
+ def [](value); end
2473
+
2474
+ sig { params(from: T.untyped, to: T.untyped).void }
2475
+ def add_direct_edge(from, to); end
2476
+
2477
+ sig { params(value: T.untyped).returns(Spoom::Poset::Element[T.untyped]) }
2478
+ def add_element(value); end
2479
+
2480
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
2481
+ def direct_edge?(from, to); end
2482
+
2483
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
2484
+ def edge?(from, to); end
2485
+
2486
+ sig { params(value: T.untyped).returns(T::Boolean) }
2487
+ def element?(value); end
2488
+
2489
+ sig { params(direct: T::Boolean, transitive: T::Boolean).void }
2490
+ def show_dot(direct: T.unsafe(nil), transitive: T.unsafe(nil)); end
2491
+
2492
+ sig { params(direct: T::Boolean, transitive: T::Boolean).returns(::String) }
2493
+ def to_dot(direct: T.unsafe(nil), transitive: T.unsafe(nil)); end
2494
+ end
2495
+
2496
+ class Spoom::Poset::Element
2497
+ include ::Comparable
2498
+
2499
+ sig { params(value: T.untyped).void }
2500
+ def initialize(value); end
2501
+
2502
+ sig { params(other: T.untyped).returns(T.nilable(::Integer)) }
2503
+ def <=>(other); end
2504
+
2505
+ sig { returns(T::Array[T.untyped]) }
2506
+ def ancestors; end
2507
+
2508
+ sig { returns(T::Array[T.untyped]) }
2509
+ def children; end
2510
+
2511
+ sig { returns(T::Array[T.untyped]) }
2512
+ def descendants; end
2513
+
2514
+ def dfroms; end
2515
+
2516
+ sig { returns(T::Set[Spoom::Poset::Element[T.untyped]]) }
2517
+ def dtos; end
2518
+
2519
+ def froms; end
2520
+
2521
+ sig { returns(T::Array[T.untyped]) }
2522
+ def parents; end
2523
+
2524
+ def tos; end
2525
+
2526
+ sig { returns(T.untyped) }
2527
+ def value; end
2528
+ end
2529
+
2530
+ class Spoom::Poset::Error < ::Spoom::Error; end
2531
+
2532
+ class Spoom::Printer
2533
+ include ::Spoom::Colorize
2534
+
2535
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
2536
+ def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
2537
+
2538
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
2539
+ def colorize(string, *color); end
2540
+
2541
+ sig { void }
2542
+ def dedent; end
2543
+
2544
+ sig { void }
2545
+ def indent; end
2546
+
2547
+ sig { returns(T.any(::IO, ::StringIO)) }
2548
+ def out; end
2549
+
2550
+ def out=(_arg0); end
2551
+
2552
+ sig { params(string: T.nilable(::String)).void }
2553
+ def print(string); end
2554
+
2555
+ sig { params(string: T.nilable(::String), color: ::Spoom::Color).void }
2556
+ def print_colored(string, *color); end
2557
+
2558
+ sig { params(string: T.nilable(::String)).void }
2559
+ def printl(string); end
2560
+
2561
+ sig { void }
2562
+ def printn; end
2563
+
2564
+ sig { void }
2565
+ def printt; end
2566
+ end
2567
+
2568
+ module Spoom::RBS; end
2569
+ class Spoom::RBS::Annotations < ::Spoom::RBS::Comment; end
2570
+
2571
+ class Spoom::RBS::Comment
2572
+ sig { params(string: ::String, location: ::Prism::Location).void }
2573
+ def initialize(string, location); end
2574
+
2575
+ sig { returns(::Prism::Location) }
2576
+ def location; end
2577
+
2578
+ sig { returns(::String) }
2579
+ def string; end
2580
+ end
2581
+
2582
+ class Spoom::RBS::Comments
2583
+ sig { void }
2584
+ def initialize; end
2585
+
2586
+ sig { returns(T::Array[::Spoom::RBS::Annotations]) }
2587
+ def annotations; end
2588
+
2589
+ sig { returns(T::Boolean) }
2590
+ def empty?; end
2591
+
2592
+ sig { returns(T::Array[::Spoom::RBS::Signature]) }
2593
+ def signatures; end
2594
+ end
2595
+
2596
+ module Spoom::RBS::ExtractRBSComments
2597
+ sig { params(node: ::Prism::Node).returns(::Spoom::RBS::Comments) }
2598
+ def node_rbs_comments(node); end
2599
+ end
2600
+
2601
+ class Spoom::RBS::Signature < ::Spoom::RBS::Comment; end
2602
+ Spoom::SPOOM_PATH = T.let(T.unsafe(nil), String)
2603
+ module Spoom::Sorbet; end
2604
+ Spoom::Sorbet::BIN_PATH = T.let(T.unsafe(nil), String)
2605
+ Spoom::Sorbet::CONFIG_PATH = T.let(T.unsafe(nil), String)
2606
+
2607
+ class Spoom::Sorbet::Config
2608
+ sig { void }
2609
+ def initialize; end
2610
+
2611
+ def allowed_extensions; end
2612
+ def allowed_extensions=(_arg0); end
2613
+
2614
+ sig { returns(::Spoom::Sorbet::Config) }
2615
+ def copy; end
2616
+
2617
+ def ignore; end
2618
+ def ignore=(_arg0); end
2619
+
2620
+ sig { returns(T::Boolean) }
2621
+ def no_stdlib; end
2622
+
2623
+ def no_stdlib=(_arg0); end
2624
+
2625
+ sig { returns(::String) }
2626
+ def options_string; end
2627
+
2628
+ sig { returns(T::Array[::String]) }
2629
+ def paths; end
2630
+
2631
+ def paths=(_arg0); end
2632
+
2633
+ class << self
2634
+ sig { params(sorbet_config_path: ::String).returns(::Spoom::Sorbet::Config) }
2635
+ def parse_file(sorbet_config_path); end
2636
+
2637
+ sig { params(sorbet_config: ::String).returns(::Spoom::Sorbet::Config) }
2638
+ def parse_string(sorbet_config); end
2639
+
2640
+ private
2641
+
2642
+ sig { params(line: ::String).returns(::String) }
2643
+ def parse_option(line); end
2644
+ end
2645
+ end
2646
+
2647
+ Spoom::Sorbet::Config::DEFAULT_ALLOWED_EXTENSIONS = T.let(T.unsafe(nil), Array)
2648
+
2649
+ class Spoom::Sorbet::Error < ::Spoom::Error
2650
+ sig { params(message: ::String, result: ::Spoom::ExecResult).void }
2651
+ def initialize(message, result); end
2652
+
2653
+ sig { returns(::Spoom::ExecResult) }
2654
+ def result; end
2655
+ end
2656
+
2657
+ class Spoom::Sorbet::Error::Killed < ::Spoom::Sorbet::Error; end
2658
+ class Spoom::Sorbet::Error::Segfault < ::Spoom::Sorbet::Error; end
2659
+
2660
+ module Spoom::Sorbet::Errors
2661
+ class << self
2662
+ sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error]).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
2663
+ def sort_errors_by_code(errors); end
2664
+
2665
+ sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error]).returns(::REXML::Document) }
2666
+ def to_junit_xml(errors); end
2667
+ end
2668
+ end
2669
+
2670
+ Spoom::Sorbet::Errors::DEFAULT_ERROR_URL_BASE = T.let(T.unsafe(nil), String)
2671
+
2672
+ class Spoom::Sorbet::Errors::Error
2673
+ include ::Comparable
2674
+
2675
+ sig do
2676
+ params(
2677
+ file: T.nilable(::String),
2678
+ line: T.nilable(::Integer),
2679
+ message: T.nilable(::String),
2680
+ code: T.nilable(::Integer),
2681
+ more: T::Array[::String]
2682
+ ).void
2683
+ end
2684
+ def initialize(file, line, message, code, more = T.unsafe(nil)); end
2685
+
2686
+ sig { params(other: T.untyped).returns(::Integer) }
2687
+ def <=>(other); end
2688
+
2689
+ def code; end
2690
+
2691
+ sig { returns(T.nilable(::String)) }
2692
+ def file; end
2693
+
2694
+ sig { returns(T::Set[::String]) }
2695
+ def files_from_error_sections; end
2696
+
2697
+ sig { returns(T.nilable(::Integer)) }
2698
+ def line; end
2699
+
2700
+ def message; end
2701
+
2702
+ sig { returns(T::Array[::String]) }
2703
+ def more; end
2704
+
2705
+ sig { returns(::REXML::Element) }
2706
+ def to_junit_xml_element; end
2707
+
2708
+ sig { returns(::String) }
2709
+ def to_s; end
2710
+ end
2711
+
2712
+ class Spoom::Sorbet::Errors::Parser
2713
+ sig { params(error_url_base: ::String).void }
2714
+ def initialize(error_url_base: T.unsafe(nil)); end
2715
+
2716
+ sig { params(output: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
2717
+ def parse(output); end
2718
+
2719
+ private
2720
+
2721
+ sig { params(line: ::String).void }
2722
+ def append_error(line); end
2723
+
2724
+ sig { void }
2725
+ def close_error; end
2726
+
2727
+ sig { params(error_url_base: ::String).returns(::Regexp) }
2728
+ def error_line_match_regexp(error_url_base); end
2729
+
2730
+ sig { params(line: ::String).returns(T.nilable(::Spoom::Sorbet::Errors::Error)) }
2731
+ def match_error_line(line); end
2732
+
2733
+ sig { params(error: ::Spoom::Sorbet::Errors::Error).void }
2734
+ def open_error(error); end
2735
+
2736
+ class << self
2737
+ sig { params(output: ::String, error_url_base: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
2738
+ def parse_string(output, error_url_base: T.unsafe(nil)); end
2739
+ end
2740
+ end
2741
+
2742
+ Spoom::Sorbet::Errors::Parser::HEADER = T.let(T.unsafe(nil), Array)
2743
+ class Spoom::Sorbet::Errors::Parser::ParseError < ::Spoom::Error; end
2744
+ Spoom::Sorbet::GEM_PATH = T.let(T.unsafe(nil), String)
2745
+ Spoom::Sorbet::GEM_VERSION = T.let(T.unsafe(nil), String)
2746
+ Spoom::Sorbet::KILLED_CODE = T.let(T.unsafe(nil), Integer)
2747
+
2748
+ module Spoom::Sorbet::Metrics
2749
+ class << self
2750
+ sig { params(files: T::Array[::String]).returns(Spoom::Counters) }
2751
+ def collect_code_metrics(files); end
2752
+ end
2753
+ end
2754
+
2755
+ class Spoom::Sorbet::Metrics::CodeMetricsVisitor < ::Spoom::Visitor
2756
+ include ::Spoom::RBS::ExtractRBSComments
2757
+
2758
+ sig { params(counters: Spoom::Counters).void }
2759
+ def initialize(counters); end
2760
+
2761
+ sig { returns(Spoom::Counters) }
2762
+ def counters; end
2763
+
2764
+ sig { override.params(node: T.nilable(::Prism::Node)).void }
2765
+ def visit(node); end
2766
+
2767
+ sig { override.params(node: ::Prism::CallNode).void }
2768
+ def visit_call_node(node); end
2769
+
2770
+ sig { override.params(node: ::Prism::ClassNode).void }
2771
+ def visit_class_node(node); end
2772
+
2773
+ sig { override.params(node: ::Prism::DefNode).void }
2774
+ def visit_def_node(node); end
2775
+
2776
+ sig { override.params(node: ::Prism::ModuleNode).void }
2777
+ def visit_module_node(node); end
2778
+
2779
+ sig { override.params(node: ::Prism::SingletonClassNode).void }
2780
+ def visit_singleton_class_node(node); end
2781
+
2782
+ private
2783
+
2784
+ sig { returns(T::Array[::Prism::CallNode]) }
2785
+ def collect_last_srb_sigs; end
2786
+
2787
+ sig { params(node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode)).returns(::String) }
2788
+ def node_key(node); end
2789
+
2790
+ sig { params(node: ::Prism::CallNode).void }
2791
+ def visit_attr_accessor(node); end
2792
+
2793
+ sig do
2794
+ params(
2795
+ node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
2796
+ block: T.proc.void
2797
+ ).void
2798
+ end
2799
+ def visit_scope(node, &block); end
2800
+
2801
+ sig { params(node: ::Prism::CallNode).void }
2802
+ def visit_sig(node); end
2803
+
2804
+ sig { params(node: ::Prism::CallNode).void }
2805
+ def visit_type_member(node); end
2806
+ end
2807
+
2808
+ module Spoom::Sorbet::Metrics::MetricsFileParser
2809
+ class << self
2810
+ sig { params(path: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
2811
+ def parse_file(path, prefix = T.unsafe(nil)); end
2812
+
2813
+ sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(Spoom::Counters) }
2814
+ def parse_hash(obj, prefix = T.unsafe(nil)); end
2815
+
2816
+ sig { params(string: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
2817
+ def parse_string(string, prefix = T.unsafe(nil)); end
2818
+ end
2819
+ end
2820
+
2821
+ Spoom::Sorbet::Metrics::MetricsFileParser::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
2822
+ Spoom::Sorbet::SEGFAULT_CODE = T.let(T.unsafe(nil), Integer)
2823
+
2824
+ module Spoom::Sorbet::Sigils
2825
+ class << self
2826
+ sig { params(path: T.any(::Pathname, ::String), new_strictness: ::String).returns(T::Boolean) }
2827
+ def change_sigil_in_file(path, new_strictness); end
2828
+
2829
+ sig { params(path_list: T::Array[::String], new_strictness: ::String).returns(T::Array[::String]) }
2830
+ def change_sigil_in_files(path_list, new_strictness); end
2831
+
2832
+ sig { params(path: T.any(::Pathname, ::String)).returns(T.nilable(::String)) }
2833
+ def file_strictness(path); end
2834
+
2835
+ sig { params(strictness: ::String).returns(::String) }
2836
+ def sigil_string(strictness); end
2837
+
2838
+ sig { params(content: ::String).returns(T.nilable(::String)) }
2839
+ def strictness_in_content(content); end
2840
+
2841
+ sig { params(content: ::String, new_strictness: ::String).returns(::String) }
2842
+ def update_sigil(content, new_strictness); end
2843
+
2844
+ sig { params(strictness: ::String).returns(T::Boolean) }
2845
+ def valid_strictness?(strictness); end
2846
+ end
2847
+ end
2848
+
2849
+ Spoom::Sorbet::Sigils::SIGIL_REGEXP = T.let(T.unsafe(nil), Regexp)
2850
+ Spoom::Sorbet::Sigils::STRICTNESS_FALSE = T.let(T.unsafe(nil), String)
2851
+ Spoom::Sorbet::Sigils::STRICTNESS_IGNORE = T.let(T.unsafe(nil), String)
2852
+ Spoom::Sorbet::Sigils::STRICTNESS_INTERNAL = T.let(T.unsafe(nil), String)
2853
+ Spoom::Sorbet::Sigils::STRICTNESS_STRICT = T.let(T.unsafe(nil), String)
2854
+ Spoom::Sorbet::Sigils::STRICTNESS_STRONG = T.let(T.unsafe(nil), String)
2855
+ Spoom::Sorbet::Sigils::STRICTNESS_TRUE = T.let(T.unsafe(nil), String)
2856
+ Spoom::Sorbet::Sigils::VALID_STRICTNESS = T.let(T.unsafe(nil), Array)
2857
+
2858
+ module Spoom::Sorbet::Translate
2859
+ class << self
2860
+ sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2861
+ def rbs_comments_to_sorbet_sigs(ruby_contents, file:); end
2862
+
2863
+ sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2864
+ def sorbet_assertions_to_rbs_comments(ruby_contents, file:); end
2865
+
2866
+ sig { params(ruby_contents: ::String, file: ::String, positional_names: T::Boolean).returns(::String) }
2867
+ def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil)); end
2868
+
2869
+ sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2870
+ def strip_sorbet_sigs(ruby_contents, file:); end
2871
+ end
2872
+ end
2873
+
2874
+ class Spoom::Sorbet::Translate::Error < ::Spoom::Error; end
2875
+
2876
+ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Translate::Translator
2877
+ include ::Spoom::RBS::ExtractRBSComments
2878
+
2879
+ sig { override.params(node: ::Prism::CallNode).void }
2880
+ def visit_call_node(node); end
2881
+
2882
+ sig { override.params(node: ::Prism::ClassNode).void }
2883
+ def visit_class_node(node); end
2884
+
2885
+ sig { override.params(node: ::Prism::DefNode).void }
2886
+ def visit_def_node(node); end
2887
+
2888
+ sig { override.params(node: ::Prism::ModuleNode).void }
2889
+ def visit_module_node(node); end
2890
+
2891
+ sig { override.params(node: ::Prism::SingletonClassNode).void }
2892
+ def visit_singleton_class_node(node); end
2893
+
2894
+ private
2895
+
2896
+ sig do
2897
+ params(
2898
+ node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
2899
+ constant_regex: ::Regexp
2900
+ ).returns(T::Boolean)
2901
+ end
2902
+ def already_extends?(node, constant_regex); end
2903
+
2904
+ sig { params(node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode)).void }
2905
+ def apply_class_annotations(node); end
2906
+
2907
+ sig { params(annotations: T::Array[::Spoom::RBS::Annotations], sig: ::RBI::Sig).void }
2908
+ def apply_member_annotations(annotations, sig); end
2909
+
2910
+ sig { params(node: ::Prism::CallNode).void }
2911
+ def visit_attr(node); end
2912
+ end
2913
+
2914
+ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet::Translate::Translator
2915
+ sig { override.params(node: ::Prism::CallNode).void }
2916
+ def visit_call_node(node); end
2917
+
2918
+ private
2919
+
2920
+ sig { params(node: ::Prism::Node).returns(T::Boolean) }
2921
+ def at_end_of_line?(node); end
2922
+
2923
+ sig { params(call: ::Prism::CallNode).void }
2924
+ def build_rbs_annotation(call); end
2925
+
2926
+ sig { params(assign: ::Prism::Node, value: ::Prism::Node).returns(::String) }
2927
+ def dedent_value(assign, value); end
2928
+
2929
+ sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
2930
+ def t?(node); end
2931
+
2932
+ sig { params(node: ::Prism::CallNode).returns(T::Boolean) }
2933
+ def t_annotation?(node); end
2934
+ end
2935
+
2936
+ Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments::LINE_BREAK = T.let(T.unsafe(nil), Integer)
2937
+
2938
+ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Translate::Translator
2939
+ sig { params(ruby_contents: ::String, file: ::String, positional_names: T::Boolean).void }
2940
+ def initialize(ruby_contents, file:, positional_names:); end
2941
+
2942
+ sig { override.params(node: ::Prism::CallNode).void }
2943
+ def visit_call_node(node); end
2944
+
2945
+ sig { override.params(node: ::Prism::ClassNode).void }
2946
+ def visit_class_node(node); end
2947
+
2948
+ sig { override.params(node: ::Prism::ConstantWriteNode).void }
2949
+ def visit_constant_write_node(node); end
2950
+
2951
+ sig { override.params(node: ::Prism::DefNode).void }
2952
+ def visit_def_node(node); end
2953
+
2954
+ sig { override.params(node: ::Prism::ModuleNode).void }
2955
+ def visit_module_node(node); end
2956
+
2957
+ sig { override.params(node: ::Prism::SingletonClassNode).void }
2958
+ def visit_singleton_class_node(node); end
2959
+
2960
+ private
2961
+
2962
+ sig { params(sigs: T::Array[[::Prism::CallNode, ::RBI::Sig]]).void }
2963
+ def apply_member_annotations(sigs); end
2964
+
2965
+ sig { params(node: ::Prism::ConstantWriteNode).returns(::String) }
2966
+ def build_type_member_string(node); end
2967
+
2968
+ sig { params(node: ::Prism::CallNode).void }
2969
+ def visit_attr(node); end
2970
+
2971
+ sig { params(node: ::Prism::CallNode).void }
2972
+ def visit_class_annotation(node); end
2973
+
2974
+ sig { params(node: ::Prism::CallNode).void }
2975
+ def visit_extend(node); end
2976
+
2977
+ sig do
2978
+ params(
2979
+ node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
2980
+ block: T.proc.void
2981
+ ).void
2982
+ end
2983
+ def visit_scope(node, &block); end
2984
+
2985
+ sig { params(node: ::Prism::CallNode).void }
2986
+ def visit_sig(node); end
2987
+ end
2988
+
2989
+ class Spoom::Sorbet::Translate::StripSorbetSigs < ::Spoom::Sorbet::Translate::Translator
2990
+ sig { override.params(node: ::Prism::CallNode).void }
2991
+ def visit_call_node(node); end
2992
+ end
2993
+
2994
+ class Spoom::Sorbet::Translate::Translator < ::Spoom::Visitor
2995
+ abstract!
2996
+
2997
+ sig { params(ruby_contents: ::String, file: ::String).void }
2998
+ def initialize(ruby_contents, file:); end
2999
+
3000
+ sig { returns(::String) }
3001
+ def rewrite; end
3002
+
3003
+ private
3004
+
3005
+ sig { params(offset: ::Integer).returns(::Integer) }
3006
+ def adjust_to_line_end(offset); end
3007
+
3008
+ sig { params(offset: ::Integer).returns(::Integer) }
3009
+ def adjust_to_line_start(offset); end
3010
+
3011
+ sig { params(offset: ::Integer).returns(::Integer) }
3012
+ def adjust_to_new_line(offset); end
3013
+
3014
+ sig { params(node: ::Prism::CallNode).returns(T::Boolean) }
3015
+ def sorbet_sig?(node); end
3016
+ end
3017
+
3018
+ module Spoom::Source; end
3019
+
3020
+ class Spoom::Source::Delete < ::Spoom::Source::Edit
3021
+ sig { params(from: ::Integer, to: ::Integer).void }
3022
+ def initialize(from, to); end
3023
+
3024
+ sig { override.params(bytes: T::Array[T.untyped]).void }
3025
+ def apply(bytes); end
3026
+
3027
+ sig { returns(::Integer) }
3028
+ def from; end
3029
+
3030
+ sig { override.returns([::Integer, ::Integer]) }
3031
+ def range; end
3032
+
3033
+ def to; end
3034
+
3035
+ sig { override.returns(::String) }
3036
+ def to_s; end
3037
+ end
3038
+
3039
+ class Spoom::Source::Edit
3040
+ abstract!
3041
+
3042
+ sig { abstract.params(bytes: T::Array[::Integer]).void }
3043
+ def apply(bytes); end
3044
+
3045
+ sig { abstract.returns([::Integer, ::Integer]) }
3046
+ def range; end
3047
+ end
3048
+
3049
+ class Spoom::Source::Insert < ::Spoom::Source::Edit
3050
+ sig { params(position: ::Integer, text: ::String).void }
3051
+ def initialize(position, text); end
3052
+
3053
+ sig { override.params(bytes: T::Array[::Integer]).void }
3054
+ def apply(bytes); end
3055
+
3056
+ sig { returns(::Integer) }
3057
+ def position; end
3058
+
3059
+ sig { override.returns([::Integer, ::Integer]) }
3060
+ def range; end
3061
+
3062
+ sig { returns(::String) }
3063
+ def text; end
3064
+
3065
+ sig { override.returns(::String) }
3066
+ def to_s; end
3067
+ end
3068
+
3069
+ class Spoom::Source::PositionError < ::Spoom::Error; end
3070
+
3071
+ class Spoom::Source::Replace < ::Spoom::Source::Edit
3072
+ sig { params(from: ::Integer, to: ::Integer, text: ::String).void }
3073
+ def initialize(from, to, text); end
3074
+
3075
+ sig { override.params(bytes: T::Array[::Integer]).void }
3076
+ def apply(bytes); end
3077
+
3078
+ sig { returns(::Integer) }
3079
+ def from; end
3080
+
3081
+ sig { override.returns([::Integer, ::Integer]) }
3082
+ def range; end
3083
+
3084
+ sig { returns(::String) }
3085
+ def text; end
3086
+
3087
+ def to; end
3088
+
3089
+ sig { override.returns(::String) }
3090
+ def to_s; end
3091
+ end
3092
+
3093
+ class Spoom::Source::Rewriter
3094
+ sig { void }
3095
+ def initialize; end
3096
+
3097
+ sig { params(other: ::Spoom::Source::Edit).void }
3098
+ def <<(other); end
3099
+
3100
+ sig { params(bytes: T::Array[::Integer]).void }
3101
+ def rewrite!(bytes); end
3102
+ end
3103
+
3104
+ class Spoom::Timeline
3105
+ sig { params(context: ::Spoom::Context, from: ::Time, to: ::Time).void }
3106
+ def initialize(context, from, to); end
3107
+
3108
+ sig { params(dates: T::Array[::Time]).returns(T::Array[::Spoom::Git::Commit]) }
3109
+ def commits_for_dates(dates); end
3110
+
3111
+ sig { returns(T::Array[::Time]) }
3112
+ def months; end
3113
+
3114
+ sig { returns(T::Array[::Spoom::Git::Commit]) }
3115
+ def ticks; end
3116
+ end
3117
+
3118
+ Spoom::VERSION = T.let(T.unsafe(nil), String)
3119
+
3120
+ class Spoom::Visitor < ::Prism::Visitor
3121
+ sig { override.params(node: ::Prism::AliasGlobalVariableNode).void }
3122
+ def visit_alias_global_variable_node(node); end
3123
+
3124
+ sig { override.params(node: ::Prism::AliasMethodNode).void }
3125
+ def visit_alias_method_node(node); end
3126
+
3127
+ sig { override.params(node: ::Prism::AlternationPatternNode).void }
3128
+ def visit_alternation_pattern_node(node); end
3129
+
3130
+ sig { override.params(node: ::Prism::AndNode).void }
3131
+ def visit_and_node(node); end
3132
+
3133
+ sig { override.params(node: ::Prism::ArgumentsNode).void }
3134
+ def visit_arguments_node(node); end
3135
+
3136
+ sig { override.params(node: ::Prism::ArrayNode).void }
3137
+ def visit_array_node(node); end
3138
+
3139
+ sig { override.params(node: ::Prism::ArrayPatternNode).void }
3140
+ def visit_array_pattern_node(node); end
3141
+
3142
+ sig { override.params(node: ::Prism::AssocNode).void }
3143
+ def visit_assoc_node(node); end
3144
+
3145
+ sig { override.params(node: ::Prism::AssocSplatNode).void }
3146
+ def visit_assoc_splat_node(node); end
3147
+
3148
+ sig { override.params(node: ::Prism::BackReferenceReadNode).void }
3149
+ def visit_back_reference_read_node(node); end
3150
+
3151
+ sig { override.params(node: ::Prism::BeginNode).void }
3152
+ def visit_begin_node(node); end
3153
+
3154
+ sig { override.params(node: ::Prism::BlockArgumentNode).void }
3155
+ def visit_block_argument_node(node); end
3156
+
3157
+ sig { override.params(node: ::Prism::BlockLocalVariableNode).void }
3158
+ def visit_block_local_variable_node(node); end
3159
+
3160
+ sig { override.params(node: ::Prism::BlockNode).void }
3161
+ def visit_block_node(node); end
3162
+
3163
+ sig { override.params(node: ::Prism::BlockParameterNode).void }
3164
+ def visit_block_parameter_node(node); end
3165
+
3166
+ sig { override.params(node: ::Prism::BlockParametersNode).void }
3167
+ def visit_block_parameters_node(node); end
3168
+
3169
+ sig { override.params(node: ::Prism::BreakNode).void }
3170
+ def visit_break_node(node); end
3171
+
3172
+ sig { override.params(node: ::Prism::CallAndWriteNode).void }
3173
+ def visit_call_and_write_node(node); end
3174
+
3175
+ sig { override.params(node: ::Prism::CallNode).void }
3176
+ def visit_call_node(node); end
3177
+
3178
+ sig { override.params(node: ::Prism::CallOperatorWriteNode).void }
3179
+ def visit_call_operator_write_node(node); end
3180
+
3181
+ sig { override.params(node: ::Prism::CallOrWriteNode).void }
3182
+ def visit_call_or_write_node(node); end
3183
+
3184
+ sig { override.params(node: ::Prism::CallTargetNode).void }
3185
+ def visit_call_target_node(node); end
3186
+
3187
+ sig { override.params(node: ::Prism::CapturePatternNode).void }
3188
+ def visit_capture_pattern_node(node); end
3189
+
3190
+ sig { override.params(node: ::Prism::CaseMatchNode).void }
3191
+ def visit_case_match_node(node); end
3192
+
3193
+ sig { override.params(node: ::Prism::CaseNode).void }
3194
+ def visit_case_node(node); end
3195
+
3196
+ sig { override.params(node: ::Prism::Node).void }
3197
+ def visit_child_nodes(node); end
3198
+
3199
+ sig { override.params(node: ::Prism::ClassNode).void }
3200
+ def visit_class_node(node); end
3201
+
3202
+ sig { override.params(node: ::Prism::ClassVariableAndWriteNode).void }
3203
+ def visit_class_variable_and_write_node(node); end
3204
+
3205
+ sig { override.params(node: ::Prism::ClassVariableOperatorWriteNode).void }
3206
+ def visit_class_variable_operator_write_node(node); end
3207
+
3208
+ sig { override.params(node: ::Prism::ClassVariableOrWriteNode).void }
3209
+ def visit_class_variable_or_write_node(node); end
3210
+
3211
+ sig { override.params(node: ::Prism::ClassVariableReadNode).void }
3212
+ def visit_class_variable_read_node(node); end
3213
+
3214
+ sig { override.params(node: ::Prism::ClassVariableTargetNode).void }
3215
+ def visit_class_variable_target_node(node); end
3216
+
3217
+ sig { override.params(node: ::Prism::ClassVariableWriteNode).void }
3218
+ def visit_class_variable_write_node(node); end
3219
+
3220
+ sig { override.params(node: ::Prism::ConstantAndWriteNode).void }
3221
+ def visit_constant_and_write_node(node); end
3222
+
3223
+ sig { override.params(node: ::Prism::ConstantOperatorWriteNode).void }
3224
+ def visit_constant_operator_write_node(node); end
3225
+
3226
+ sig { override.params(node: ::Prism::ConstantOrWriteNode).void }
3227
+ def visit_constant_or_write_node(node); end
3228
+
3229
+ sig { override.params(node: ::Prism::ConstantPathAndWriteNode).void }
3230
+ def visit_constant_path_and_write_node(node); end
3231
+
3232
+ sig { override.params(node: ::Prism::ConstantPathNode).void }
3233
+ def visit_constant_path_node(node); end
3234
+
3235
+ sig { override.params(node: ::Prism::ConstantPathOperatorWriteNode).void }
3236
+ def visit_constant_path_operator_write_node(node); end
3237
+
3238
+ sig { override.params(node: ::Prism::ConstantPathOrWriteNode).void }
3239
+ def visit_constant_path_or_write_node(node); end
3240
+
3241
+ sig { override.params(node: ::Prism::ConstantPathTargetNode).void }
3242
+ def visit_constant_path_target_node(node); end
3243
+
3244
+ sig { override.params(node: ::Prism::ConstantPathWriteNode).void }
3245
+ def visit_constant_path_write_node(node); end
3246
+
3247
+ sig { override.params(node: ::Prism::ConstantReadNode).void }
3248
+ def visit_constant_read_node(node); end
3249
+
3250
+ sig { override.params(node: ::Prism::ConstantTargetNode).void }
3251
+ def visit_constant_target_node(node); end
3252
+
3253
+ sig { override.params(node: ::Prism::ConstantWriteNode).void }
3254
+ def visit_constant_write_node(node); end
3255
+
3256
+ sig { override.params(node: ::Prism::DefNode).void }
3257
+ def visit_def_node(node); end
3258
+
3259
+ sig { override.params(node: ::Prism::DefinedNode).void }
3260
+ def visit_defined_node(node); end
3261
+
3262
+ sig { override.params(node: ::Prism::ElseNode).void }
3263
+ def visit_else_node(node); end
3264
+
3265
+ sig { override.params(node: ::Prism::EmbeddedStatementsNode).void }
3266
+ def visit_embedded_statements_node(node); end
3267
+
3268
+ sig { override.params(node: ::Prism::EmbeddedVariableNode).void }
3269
+ def visit_embedded_variable_node(node); end
3270
+
3271
+ sig { override.params(node: ::Prism::EnsureNode).void }
3272
+ def visit_ensure_node(node); end
3273
+
3274
+ sig { override.params(node: ::Prism::FalseNode).void }
3275
+ def visit_false_node(node); end
3276
+
3277
+ sig { override.params(node: ::Prism::FindPatternNode).void }
3278
+ def visit_find_pattern_node(node); end
3279
+
3280
+ sig { override.params(node: ::Prism::FlipFlopNode).void }
3281
+ def visit_flip_flop_node(node); end
3282
+
3283
+ sig { override.params(node: ::Prism::FloatNode).void }
3284
+ def visit_float_node(node); end
3285
+
3286
+ sig { override.params(node: ::Prism::ForNode).void }
3287
+ def visit_for_node(node); end
3288
+
3289
+ sig { override.params(node: ::Prism::ForwardingArgumentsNode).void }
3290
+ def visit_forwarding_arguments_node(node); end
3291
+
3292
+ sig { override.params(node: ::Prism::ForwardingParameterNode).void }
3293
+ def visit_forwarding_parameter_node(node); end
3294
+
3295
+ sig { override.params(node: ::Prism::ForwardingSuperNode).void }
3296
+ def visit_forwarding_super_node(node); end
3297
+
3298
+ sig { override.params(node: ::Prism::GlobalVariableAndWriteNode).void }
3299
+ def visit_global_variable_and_write_node(node); end
3300
+
3301
+ sig { override.params(node: ::Prism::GlobalVariableOperatorWriteNode).void }
3302
+ def visit_global_variable_operator_write_node(node); end
3303
+
3304
+ sig { override.params(node: ::Prism::GlobalVariableOrWriteNode).void }
3305
+ def visit_global_variable_or_write_node(node); end
3306
+
3307
+ sig { override.params(node: ::Prism::GlobalVariableReadNode).void }
3308
+ def visit_global_variable_read_node(node); end
3309
+
3310
+ sig { override.params(node: ::Prism::GlobalVariableTargetNode).void }
3311
+ def visit_global_variable_target_node(node); end
3312
+
3313
+ sig { override.params(node: ::Prism::GlobalVariableWriteNode).void }
3314
+ def visit_global_variable_write_node(node); end
3315
+
3316
+ sig { override.params(node: ::Prism::HashNode).void }
3317
+ def visit_hash_node(node); end
3318
+
3319
+ sig { override.params(node: ::Prism::HashPatternNode).void }
3320
+ def visit_hash_pattern_node(node); end
3321
+
3322
+ sig { override.params(node: ::Prism::IfNode).void }
3323
+ def visit_if_node(node); end
3324
+
3325
+ sig { override.params(node: ::Prism::ImaginaryNode).void }
3326
+ def visit_imaginary_node(node); end
3327
+
3328
+ sig { override.params(node: ::Prism::ImplicitNode).void }
3329
+ def visit_implicit_node(node); end
3330
+
3331
+ sig { override.params(node: ::Prism::ImplicitRestNode).void }
3332
+ def visit_implicit_rest_node(node); end
3333
+
3334
+ sig { override.params(node: ::Prism::InNode).void }
3335
+ def visit_in_node(node); end
3336
+
3337
+ sig { override.params(node: ::Prism::IndexAndWriteNode).void }
3338
+ def visit_index_and_write_node(node); end
3339
+
3340
+ sig { override.params(node: ::Prism::IndexOperatorWriteNode).void }
3341
+ def visit_index_operator_write_node(node); end
3342
+
3343
+ sig { override.params(node: ::Prism::IndexOrWriteNode).void }
3344
+ def visit_index_or_write_node(node); end
3345
+
3346
+ sig { override.params(node: ::Prism::IndexTargetNode).void }
3347
+ def visit_index_target_node(node); end
3348
+
3349
+ sig { override.params(node: ::Prism::InstanceVariableAndWriteNode).void }
3350
+ def visit_instance_variable_and_write_node(node); end
3351
+
3352
+ sig { override.params(node: ::Prism::InstanceVariableOperatorWriteNode).void }
3353
+ def visit_instance_variable_operator_write_node(node); end
3354
+
3355
+ sig { override.params(node: ::Prism::InstanceVariableOrWriteNode).void }
3356
+ def visit_instance_variable_or_write_node(node); end
3357
+
3358
+ sig { override.params(node: ::Prism::InstanceVariableReadNode).void }
3359
+ def visit_instance_variable_read_node(node); end
3360
+
3361
+ sig { override.params(node: ::Prism::InstanceVariableTargetNode).void }
3362
+ def visit_instance_variable_target_node(node); end
3363
+
3364
+ sig { override.params(node: ::Prism::InstanceVariableWriteNode).void }
3365
+ def visit_instance_variable_write_node(node); end
3366
+
3367
+ sig { override.params(node: ::Prism::IntegerNode).void }
3368
+ def visit_integer_node(node); end
3369
+
3370
+ sig { override.params(node: ::Prism::InterpolatedMatchLastLineNode).void }
3371
+ def visit_interpolated_match_last_line_node(node); end
3372
+
3373
+ sig { override.params(node: ::Prism::InterpolatedRegularExpressionNode).void }
3374
+ def visit_interpolated_regular_expression_node(node); end
3375
+
3376
+ sig { override.params(node: ::Prism::InterpolatedStringNode).void }
3377
+ def visit_interpolated_string_node(node); end
3378
+
3379
+ sig { override.params(node: ::Prism::InterpolatedSymbolNode).void }
3380
+ def visit_interpolated_symbol_node(node); end
3381
+
3382
+ sig { override.params(node: ::Prism::InterpolatedXStringNode).void }
3383
+ def visit_interpolated_x_string_node(node); end
3384
+
3385
+ sig { override.params(node: ::Prism::KeywordHashNode).void }
3386
+ def visit_keyword_hash_node(node); end
3387
+
3388
+ sig { override.params(node: ::Prism::KeywordRestParameterNode).void }
3389
+ def visit_keyword_rest_parameter_node(node); end
3390
+
3391
+ sig { override.params(node: ::Prism::LambdaNode).void }
3392
+ def visit_lambda_node(node); end
3393
+
3394
+ sig { override.params(node: ::Prism::LocalVariableAndWriteNode).void }
3395
+ def visit_local_variable_and_write_node(node); end
3396
+
3397
+ sig { override.params(node: ::Prism::LocalVariableOperatorWriteNode).void }
3398
+ def visit_local_variable_operator_write_node(node); end
3399
+
3400
+ sig { override.params(node: ::Prism::LocalVariableOrWriteNode).void }
3401
+ def visit_local_variable_or_write_node(node); end
3402
+
3403
+ sig { override.params(node: ::Prism::LocalVariableReadNode).void }
3404
+ def visit_local_variable_read_node(node); end
3405
+
3406
+ sig { override.params(node: ::Prism::LocalVariableTargetNode).void }
3407
+ def visit_local_variable_target_node(node); end
3408
+
3409
+ sig { override.params(node: ::Prism::LocalVariableWriteNode).void }
3410
+ def visit_local_variable_write_node(node); end
3411
+
3412
+ sig { override.params(node: ::Prism::MatchLastLineNode).void }
3413
+ def visit_match_last_line_node(node); end
3414
+
3415
+ sig { override.params(node: ::Prism::MatchPredicateNode).void }
3416
+ def visit_match_predicate_node(node); end
3417
+
3418
+ sig { override.params(node: ::Prism::MatchRequiredNode).void }
3419
+ def visit_match_required_node(node); end
3420
+
3421
+ sig { override.params(node: ::Prism::MatchWriteNode).void }
3422
+ def visit_match_write_node(node); end
3423
+
3424
+ sig { override.params(node: ::Prism::MissingNode).void }
3425
+ def visit_missing_node(node); end
3426
+
3427
+ sig { override.params(node: ::Prism::ModuleNode).void }
3428
+ def visit_module_node(node); end
3429
+
3430
+ sig { override.params(node: ::Prism::MultiTargetNode).void }
3431
+ def visit_multi_target_node(node); end
3432
+
3433
+ sig { override.params(node: ::Prism::MultiWriteNode).void }
3434
+ def visit_multi_write_node(node); end
3435
+
3436
+ sig { override.params(node: ::Prism::NextNode).void }
3437
+ def visit_next_node(node); end
3438
+
3439
+ sig { override.params(node: ::Prism::NilNode).void }
3440
+ def visit_nil_node(node); end
3441
+
3442
+ sig { override.params(node: ::Prism::NoKeywordsParameterNode).void }
3443
+ def visit_no_keywords_parameter_node(node); end
3444
+
3445
+ sig { override.params(node: ::Prism::NumberedParametersNode).void }
3446
+ def visit_numbered_parameters_node(node); end
3447
+
3448
+ sig { override.params(node: ::Prism::NumberedReferenceReadNode).void }
3449
+ def visit_numbered_reference_read_node(node); end
3450
+
3451
+ sig { override.params(node: ::Prism::OptionalKeywordParameterNode).void }
3452
+ def visit_optional_keyword_parameter_node(node); end
3453
+
3454
+ sig { override.params(node: ::Prism::OptionalParameterNode).void }
3455
+ def visit_optional_parameter_node(node); end
3456
+
3457
+ sig { override.params(node: ::Prism::OrNode).void }
3458
+ def visit_or_node(node); end
3459
+
3460
+ sig { override.params(node: ::Prism::ParametersNode).void }
3461
+ def visit_parameters_node(node); end
3462
+
3463
+ sig { override.params(node: ::Prism::ParenthesesNode).void }
3464
+ def visit_parentheses_node(node); end
3465
+
3466
+ sig { override.params(node: ::Prism::PinnedExpressionNode).void }
3467
+ def visit_pinned_expression_node(node); end
3468
+
3469
+ sig { override.params(node: ::Prism::PinnedVariableNode).void }
3470
+ def visit_pinned_variable_node(node); end
3471
+
3472
+ sig { override.params(node: ::Prism::PostExecutionNode).void }
3473
+ def visit_post_execution_node(node); end
3474
+
3475
+ sig { override.params(node: ::Prism::PreExecutionNode).void }
3476
+ def visit_pre_execution_node(node); end
3477
+
3478
+ sig { override.params(node: ::Prism::ProgramNode).void }
3479
+ def visit_program_node(node); end
3480
+
3481
+ sig { override.params(node: ::Prism::RangeNode).void }
3482
+ def visit_range_node(node); end
3483
+
3484
+ sig { override.params(node: ::Prism::RationalNode).void }
3485
+ def visit_rational_node(node); end
3486
+
3487
+ sig { override.params(node: ::Prism::RedoNode).void }
3488
+ def visit_redo_node(node); end
3489
+
3490
+ sig { override.params(node: ::Prism::RegularExpressionNode).void }
3491
+ def visit_regular_expression_node(node); end
3492
+
3493
+ sig { override.params(node: ::Prism::RequiredKeywordParameterNode).void }
3494
+ def visit_required_keyword_parameter_node(node); end
3495
+
3496
+ sig { override.params(node: ::Prism::RequiredParameterNode).void }
3497
+ def visit_required_parameter_node(node); end
3498
+
3499
+ sig { override.params(node: ::Prism::RescueModifierNode).void }
3500
+ def visit_rescue_modifier_node(node); end
3501
+
3502
+ sig { override.params(node: ::Prism::RescueNode).void }
3503
+ def visit_rescue_node(node); end
3504
+
3505
+ sig { override.params(node: ::Prism::RestParameterNode).void }
3506
+ def visit_rest_parameter_node(node); end
3507
+
3508
+ sig { override.params(node: ::Prism::RetryNode).void }
3509
+ def visit_retry_node(node); end
3510
+
3511
+ sig { override.params(node: ::Prism::ReturnNode).void }
3512
+ def visit_return_node(node); end
3513
+
3514
+ sig { override.params(node: ::Prism::SelfNode).void }
3515
+ def visit_self_node(node); end
3516
+
3517
+ sig { override.params(node: ::Prism::SingletonClassNode).void }
3518
+ def visit_singleton_class_node(node); end
3519
+
3520
+ sig { override.params(node: ::Prism::SourceEncodingNode).void }
3521
+ def visit_source_encoding_node(node); end
3522
+
3523
+ sig { override.params(node: ::Prism::SourceFileNode).void }
3524
+ def visit_source_file_node(node); end
3525
+
3526
+ sig { override.params(node: ::Prism::SourceLineNode).void }
3527
+ def visit_source_line_node(node); end
3528
+
3529
+ sig { override.params(node: ::Prism::SplatNode).void }
3530
+ def visit_splat_node(node); end
3531
+
3532
+ sig { override.params(node: ::Prism::StatementsNode).void }
3533
+ def visit_statements_node(node); end
3534
+
3535
+ sig { override.params(node: ::Prism::StringNode).void }
3536
+ def visit_string_node(node); end
3537
+
3538
+ sig { override.params(node: ::Prism::SuperNode).void }
3539
+ def visit_super_node(node); end
3540
+
3541
+ sig { override.params(node: ::Prism::SymbolNode).void }
3542
+ def visit_symbol_node(node); end
3543
+
3544
+ sig { override.params(node: ::Prism::TrueNode).void }
3545
+ def visit_true_node(node); end
3546
+
3547
+ sig { override.params(node: ::Prism::UndefNode).void }
3548
+ def visit_undef_node(node); end
3549
+
3550
+ sig { override.params(node: ::Prism::UnlessNode).void }
3551
+ def visit_unless_node(node); end
3552
+
3553
+ sig { override.params(node: ::Prism::UntilNode).void }
3554
+ def visit_until_node(node); end
3555
+
3556
+ sig { override.params(node: ::Prism::WhenNode).void }
3557
+ def visit_when_node(node); end
3558
+
3559
+ sig { override.params(node: ::Prism::WhileNode).void }
3560
+ def visit_while_node(node); end
3561
+
3562
+ sig { override.params(node: ::Prism::XStringNode).void }
3563
+ def visit_x_string_node(node); end
3564
+
3565
+ sig { override.params(node: ::Prism::YieldNode).void }
3566
+ def visit_yield_node(node); end
3567
+ end