spoom 1.6.3 → 1.7.1

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.
data/rbi/spoom.rbi CHANGED
@@ -6,11 +6,8 @@
6
6
 
7
7
  module Spoom
8
8
  class << self
9
- sig { params(ruby: ::String, file: ::String).returns(::Prism::Node) }
10
- def parse_ruby(ruby, file:); end
11
-
12
- sig { params(ruby: ::String, file: ::String).returns([::Prism::Node, T::Array[::Prism::Comment]]) }
13
- def parse_ruby_with_comments(ruby, file:); end
9
+ sig { params(ruby: ::String, file: ::String, comments: T::Boolean).returns(::Prism::Node) }
10
+ def parse_ruby(ruby, file:, comments: T.unsafe(nil)); end
14
11
  end
15
12
  end
16
13
 
@@ -168,10 +165,19 @@ class Spoom::Cli::Srb::Main < ::Thor
168
165
  def coverage(*args); end
169
166
  def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
170
167
  def lsp(*args); end
168
+ def metrics(*args); end
171
169
  def sigs(*args); end
172
170
  def tc(*args); end
173
171
  end
174
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
+
175
181
  class Spoom::Cli::Srb::Sigs < ::Thor
176
182
  include ::Spoom::Colorize
177
183
  include ::Spoom::Cli::Helper
@@ -425,6 +431,17 @@ module Spoom::Context::Sorbet
425
431
  def write_sorbet_config!(contents, append: T.unsafe(nil)); end
426
432
  end
427
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
+
428
445
  module Spoom::Coverage
429
446
  class << self
430
447
  sig { params(context: ::Spoom::Context).returns(::Spoom::FileTree) }
@@ -1133,6 +1150,7 @@ end
1133
1150
 
1134
1151
  Spoom::Deadcode::Plugins::ActiveRecord::ARRAY_METHODS = T.let(T.unsafe(nil), Array)
1135
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)
1136
1154
  Spoom::Deadcode::Plugins::ActiveRecord::CRUD_METHODS = T.let(T.unsafe(nil), Array)
1137
1155
 
1138
1156
  class Spoom::Deadcode::Plugins::ActiveSupport < ::Spoom::Deadcode::Plugins::Base
@@ -2100,8 +2118,8 @@ class Spoom::Model::AttrReader < ::Spoom::Model::Attr; end
2100
2118
  class Spoom::Model::AttrWriter < ::Spoom::Model::Attr; end
2101
2119
 
2102
2120
  class Spoom::Model::Builder < ::Spoom::Model::NamespaceVisitor
2103
- sig { params(model: ::Spoom::Model, file: ::String, comments: T::Array[::Prism::Comment]).void }
2104
- def initialize(model, file, comments:); end
2121
+ sig { params(model: ::Spoom::Model, file: ::String).void }
2122
+ def initialize(model, file); end
2105
2123
 
2106
2124
  sig { override.params(node: ::Prism::CallNode).void }
2107
2125
  def visit_call_node(node); end
@@ -2447,29 +2465,25 @@ end
2447
2465
  class Spoom::ParseError < ::Spoom::Error; end
2448
2466
 
2449
2467
  class Spoom::Poset
2450
- extend T::Generic
2451
-
2452
- E = type_member { { upper: Object } }
2453
-
2454
2468
  sig { void }
2455
2469
  def initialize; end
2456
2470
 
2457
- sig { params(value: E).returns(Spoom::Poset::Element[E]) }
2471
+ sig { params(value: T.untyped).returns(Spoom::Poset::Element[T.untyped]) }
2458
2472
  def [](value); end
2459
2473
 
2460
- sig { params(from: E, to: E).void }
2474
+ sig { params(from: T.untyped, to: T.untyped).void }
2461
2475
  def add_direct_edge(from, to); end
2462
2476
 
2463
- sig { params(value: E).returns(Spoom::Poset::Element[E]) }
2477
+ sig { params(value: T.untyped).returns(Spoom::Poset::Element[T.untyped]) }
2464
2478
  def add_element(value); end
2465
2479
 
2466
- sig { params(from: E, to: E).returns(T::Boolean) }
2480
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
2467
2481
  def direct_edge?(from, to); end
2468
2482
 
2469
- sig { params(from: E, to: E).returns(T::Boolean) }
2483
+ sig { params(from: T.untyped, to: T.untyped).returns(T::Boolean) }
2470
2484
  def edge?(from, to); end
2471
2485
 
2472
- sig { params(value: E).returns(T::Boolean) }
2486
+ sig { params(value: T.untyped).returns(T::Boolean) }
2473
2487
  def element?(value); end
2474
2488
 
2475
2489
  sig { params(direct: T::Boolean, transitive: T::Boolean).void }
@@ -2480,39 +2494,36 @@ class Spoom::Poset
2480
2494
  end
2481
2495
 
2482
2496
  class Spoom::Poset::Element
2483
- extend T::Generic
2484
2497
  include ::Comparable
2485
2498
 
2486
- E = type_member { { upper: Object } }
2487
-
2488
- sig { params(value: E).void }
2499
+ sig { params(value: T.untyped).void }
2489
2500
  def initialize(value); end
2490
2501
 
2491
2502
  sig { params(other: T.untyped).returns(T.nilable(::Integer)) }
2492
2503
  def <=>(other); end
2493
2504
 
2494
- sig { returns(T::Array[E]) }
2505
+ sig { returns(T::Array[T.untyped]) }
2495
2506
  def ancestors; end
2496
2507
 
2497
- sig { returns(T::Array[E]) }
2508
+ sig { returns(T::Array[T.untyped]) }
2498
2509
  def children; end
2499
2510
 
2500
- sig { returns(T::Array[E]) }
2511
+ sig { returns(T::Array[T.untyped]) }
2501
2512
  def descendants; end
2502
2513
 
2503
2514
  def dfroms; end
2504
2515
 
2505
- sig { returns(T::Set[Spoom::Poset::Element[E]]) }
2516
+ sig { returns(T::Set[Spoom::Poset::Element[T.untyped]]) }
2506
2517
  def dtos; end
2507
2518
 
2508
2519
  def froms; end
2509
2520
 
2510
- sig { returns(T::Array[E]) }
2521
+ sig { returns(T::Array[T.untyped]) }
2511
2522
  def parents; end
2512
2523
 
2513
2524
  def tos; end
2514
2525
 
2515
- sig { returns(E) }
2526
+ sig { returns(T.untyped) }
2516
2527
  def value; end
2517
2528
  end
2518
2529
 
@@ -2554,117 +2565,42 @@ class Spoom::Printer
2554
2565
  def printt; end
2555
2566
  end
2556
2567
 
2557
- Spoom::SPOOM_PATH = T.let(T.unsafe(nil), String)
2558
- module Spoom::Sorbet; end
2559
-
2560
- class Spoom::Sorbet::Assertions
2561
- class << self
2562
- sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2563
- def rbi_to_rbs(ruby_contents, file:); end
2564
-
2565
- private
2568
+ module Spoom::RBS; end
2569
+ class Spoom::RBS::Annotations < ::Spoom::RBS::Comment; end
2566
2570
 
2567
- sig { params(ruby_contents: ::String, file: ::String).returns(T::Array[::Spoom::Sorbet::Assertions::AssignNode]) }
2568
- def collect_assigns(ruby_contents, file:); end
2569
-
2570
- sig { params(assign: ::Spoom::Sorbet::Assertions::AssignNode).returns(::String) }
2571
- def dedent_value(assign); end
2572
- end
2573
- end
2574
-
2575
- class Spoom::Sorbet::Assertions::AssignNode
2576
- sig do
2577
- params(
2578
- node: T.any(::Prism::ClassVariableAndWriteNode, ::Prism::ClassVariableOperatorWriteNode, ::Prism::ClassVariableOrWriteNode, ::Prism::ClassVariableWriteNode, ::Prism::ConstantAndWriteNode, ::Prism::ConstantOperatorWriteNode, ::Prism::ConstantOrWriteNode, ::Prism::ConstantPathAndWriteNode, ::Prism::ConstantPathOperatorWriteNode, ::Prism::ConstantPathOrWriteNode, ::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode, ::Prism::GlobalVariableAndWriteNode, ::Prism::GlobalVariableOperatorWriteNode, ::Prism::GlobalVariableOrWriteNode, ::Prism::GlobalVariableWriteNode, ::Prism::InstanceVariableAndWriteNode, ::Prism::InstanceVariableOperatorWriteNode, ::Prism::InstanceVariableOrWriteNode, ::Prism::InstanceVariableWriteNode, ::Prism::LocalVariableAndWriteNode, ::Prism::LocalVariableOperatorWriteNode, ::Prism::LocalVariableOrWriteNode, ::Prism::LocalVariableWriteNode),
2579
- operator_loc: ::Prism::Location,
2580
- value: ::Prism::Node,
2581
- type: ::Prism::Node
2582
- ).void
2583
- end
2584
- def initialize(node, operator_loc, value, type); end
2585
-
2586
- sig do
2587
- returns(T.any(::Prism::ClassVariableAndWriteNode, ::Prism::ClassVariableOperatorWriteNode, ::Prism::ClassVariableOrWriteNode, ::Prism::ClassVariableWriteNode, ::Prism::ConstantAndWriteNode, ::Prism::ConstantOperatorWriteNode, ::Prism::ConstantOrWriteNode, ::Prism::ConstantPathAndWriteNode, ::Prism::ConstantPathOperatorWriteNode, ::Prism::ConstantPathOrWriteNode, ::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode, ::Prism::GlobalVariableAndWriteNode, ::Prism::GlobalVariableOperatorWriteNode, ::Prism::GlobalVariableOrWriteNode, ::Prism::GlobalVariableWriteNode, ::Prism::InstanceVariableAndWriteNode, ::Prism::InstanceVariableOperatorWriteNode, ::Prism::InstanceVariableOrWriteNode, ::Prism::InstanceVariableWriteNode, ::Prism::LocalVariableAndWriteNode, ::Prism::LocalVariableOperatorWriteNode, ::Prism::LocalVariableOrWriteNode, ::Prism::LocalVariableWriteNode))
2588
- end
2589
- def node; end
2571
+ class Spoom::RBS::Comment
2572
+ sig { params(string: ::String, location: ::Prism::Location).void }
2573
+ def initialize(string, location); end
2590
2574
 
2591
2575
  sig { returns(::Prism::Location) }
2592
- def operator_loc; end
2576
+ def location; end
2593
2577
 
2594
2578
  sig { returns(::String) }
2595
- def rbs_type; end
2596
-
2597
- def type; end
2598
-
2599
- sig { returns(::Prism::Node) }
2600
- def value; end
2579
+ def string; end
2601
2580
  end
2602
2581
 
2603
- Spoom::Sorbet::Assertions::AssignType = T.type_alias { T.any(::Prism::ClassVariableAndWriteNode, ::Prism::ClassVariableOperatorWriteNode, ::Prism::ClassVariableOrWriteNode, ::Prism::ClassVariableWriteNode, ::Prism::ConstantAndWriteNode, ::Prism::ConstantOperatorWriteNode, ::Prism::ConstantOrWriteNode, ::Prism::ConstantPathAndWriteNode, ::Prism::ConstantPathOperatorWriteNode, ::Prism::ConstantPathOrWriteNode, ::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode, ::Prism::GlobalVariableAndWriteNode, ::Prism::GlobalVariableOperatorWriteNode, ::Prism::GlobalVariableOrWriteNode, ::Prism::GlobalVariableWriteNode, ::Prism::InstanceVariableAndWriteNode, ::Prism::InstanceVariableOperatorWriteNode, ::Prism::InstanceVariableOrWriteNode, ::Prism::InstanceVariableWriteNode, ::Prism::LocalVariableAndWriteNode, ::Prism::LocalVariableOperatorWriteNode, ::Prism::LocalVariableOrWriteNode, ::Prism::LocalVariableWriteNode) }
2604
-
2605
- class Spoom::Sorbet::Assertions::Locator < ::Spoom::Visitor
2582
+ class Spoom::RBS::Comments
2606
2583
  sig { void }
2607
2584
  def initialize; end
2608
2585
 
2609
- sig { returns(T::Array[::Spoom::Sorbet::Assertions::AssignNode]) }
2610
- def assigns; end
2611
-
2612
- sig { params(node: ::Prism::Node).returns(T::Boolean) }
2613
- def contains_heredoc?(node); end
2614
-
2615
- sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
2616
- def t?(node); end
2617
-
2618
- sig { params(node: ::Prism::CallNode).returns(T::Boolean) }
2619
- def t_annotation?(node); end
2620
-
2621
- sig do
2622
- params(
2623
- node: T.any(::Prism::ClassVariableAndWriteNode, ::Prism::ClassVariableOperatorWriteNode, ::Prism::ClassVariableOrWriteNode, ::Prism::ClassVariableWriteNode, ::Prism::ConstantAndWriteNode, ::Prism::ConstantOperatorWriteNode, ::Prism::ConstantOrWriteNode, ::Prism::ConstantPathAndWriteNode, ::Prism::ConstantPathOperatorWriteNode, ::Prism::ConstantPathOrWriteNode, ::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode, ::Prism::GlobalVariableAndWriteNode, ::Prism::GlobalVariableOperatorWriteNode, ::Prism::GlobalVariableOrWriteNode, ::Prism::GlobalVariableWriteNode, ::Prism::InstanceVariableAndWriteNode, ::Prism::InstanceVariableOperatorWriteNode, ::Prism::InstanceVariableOrWriteNode, ::Prism::InstanceVariableWriteNode, ::Prism::LocalVariableAndWriteNode, ::Prism::LocalVariableOperatorWriteNode, ::Prism::LocalVariableOrWriteNode, ::Prism::LocalVariableWriteNode)
2624
- ).void
2625
- end
2626
- def visit_assign(node); end
2627
-
2628
- def visit_class_variable_and_write_node(*args, **_arg1, &blk); end
2629
- def visit_class_variable_operator_write_node(*args, **_arg1, &blk); end
2630
- def visit_class_variable_or_write_node(*args, **_arg1, &blk); end
2631
- def visit_class_variable_write_node(*args, **_arg1, &blk); end
2632
- def visit_constant_and_write_node(*args, **_arg1, &blk); end
2633
- def visit_constant_operator_write_node(*args, **_arg1, &blk); end
2634
- def visit_constant_or_write_node(*args, **_arg1, &blk); end
2635
- def visit_constant_path_and_write_node(*args, **_arg1, &blk); end
2636
- def visit_constant_path_operator_write_node(*args, **_arg1, &blk); end
2637
- def visit_constant_path_or_write_node(*args, **_arg1, &blk); end
2638
- def visit_constant_path_write_node(*args, **_arg1, &blk); end
2639
- def visit_constant_write_node(*args, **_arg1, &blk); end
2640
- def visit_global_variable_and_write_node(*args, **_arg1, &blk); end
2641
- def visit_global_variable_operator_write_node(*args, **_arg1, &blk); end
2642
- def visit_global_variable_or_write_node(*args, **_arg1, &blk); end
2643
- def visit_global_variable_write_node(*args, **_arg1, &blk); end
2644
- def visit_instance_variable_and_write_node(*args, **_arg1, &blk); end
2645
- def visit_instance_variable_operator_write_node(*args, **_arg1, &blk); end
2646
- def visit_instance_variable_or_write_node(*args, **_arg1, &blk); end
2647
- def visit_instance_variable_write_node(*args, **_arg1, &blk); end
2648
- def visit_local_variable_and_write_node(*args, **_arg1, &blk); end
2649
- def visit_local_variable_operator_write_node(*args, **_arg1, &blk); end
2650
- def visit_local_variable_or_write_node(*args, **_arg1, &blk); end
2651
- def visit_local_variable_write_node(*args, **_arg1, &blk); end
2652
- def visit_multi_write_node(*args, **_arg1, &blk); end
2653
- end
2654
-
2655
- Spoom::Sorbet::Assertions::Locator::ANNOTATION_METHODS = T.let(T.unsafe(nil), Array)
2656
-
2657
- class Spoom::Sorbet::Assertions::Locator::HeredocVisitor < ::Spoom::Visitor
2658
- sig { void }
2659
- def initialize; end
2586
+ sig { returns(T::Array[::Spoom::RBS::Annotations]) }
2587
+ def annotations; end
2660
2588
 
2661
2589
  sig { returns(T::Boolean) }
2662
- def contains_heredoc; end
2590
+ def empty?; end
2663
2591
 
2664
- sig { override.params(node: T.nilable(::Prism::Node)).void }
2665
- def visit(node); end
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
2666
2599
  end
2667
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
2668
2604
  Spoom::Sorbet::BIN_PATH = T.let(T.unsafe(nil), String)
2669
2605
  Spoom::Sorbet::CONFIG_PATH = T.let(T.unsafe(nil), String)
2670
2606
 
@@ -2809,12 +2745,72 @@ Spoom::Sorbet::GEM_PATH = T.let(T.unsafe(nil), String)
2809
2745
  Spoom::Sorbet::GEM_VERSION = T.let(T.unsafe(nil), String)
2810
2746
  Spoom::Sorbet::KILLED_CODE = T.let(T.unsafe(nil), Integer)
2811
2747
 
2812
- module Spoom::Sorbet::MetricsParser
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
2813
2809
  class << self
2814
2810
  sig { params(path: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
2815
2811
  def parse_file(path, prefix = T.unsafe(nil)); end
2816
2812
 
2817
- sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(T::Hash[::String, ::Integer]) }
2813
+ sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(Spoom::Counters) }
2818
2814
  def parse_hash(obj, prefix = T.unsafe(nil)); end
2819
2815
 
2820
2816
  sig { params(string: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
@@ -2822,7 +2818,7 @@ module Spoom::Sorbet::MetricsParser
2822
2818
  end
2823
2819
  end
2824
2820
 
2825
- Spoom::Sorbet::MetricsParser::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
2821
+ Spoom::Sorbet::Metrics::MetricsFileParser::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
2826
2822
  Spoom::Sorbet::SEGFAULT_CODE = T.let(T.unsafe(nil), Integer)
2827
2823
 
2828
2824
  module Spoom::Sorbet::Sigils
@@ -2859,87 +2855,250 @@ Spoom::Sorbet::Sigils::STRICTNESS_STRONG = T.let(T.unsafe(nil), String)
2859
2855
  Spoom::Sorbet::Sigils::STRICTNESS_TRUE = T.let(T.unsafe(nil), String)
2860
2856
  Spoom::Sorbet::Sigils::VALID_STRICTNESS = T.let(T.unsafe(nil), Array)
2861
2857
 
2862
- class Spoom::Sorbet::Sigs
2858
+ module Spoom::Sorbet::Translate
2863
2859
  class << self
2864
- sig { params(ruby_contents: ::String, positional_names: T::Boolean).returns(::String) }
2865
- def rbi_to_rbs(ruby_contents, positional_names: T.unsafe(nil)); end
2860
+ sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2861
+ def rbs_comments_to_sorbet_sigs(ruby_contents, file:); end
2866
2862
 
2867
- sig { params(ruby_contents: ::String).returns(::String) }
2868
- def rbs_to_rbi(ruby_contents); end
2863
+ sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
2864
+ def sorbet_assertions_to_rbs_comments(ruby_contents, file:); end
2869
2865
 
2870
- sig { params(ruby_contents: ::String).returns(::String) }
2871
- def strip(ruby_contents); end
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
2872
2868
 
2873
- private
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
2874
2878
 
2875
- sig { params(ruby_contents: ::String).returns(T::Array[[::RBI::RBSComment, T.any(::RBI::Attr, ::RBI::Method)]]) }
2876
- def collect_rbs_comments(ruby_contents); end
2879
+ sig { override.params(node: ::Prism::CallNode).void }
2880
+ def visit_call_node(node); end
2877
2881
 
2878
- sig { params(ruby_contents: ::String).returns(T::Array[[::RBI::Sig, T.any(::RBI::Attr, ::RBI::Method)]]) }
2879
- def collect_sorbet_sigs(ruby_contents); end
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)
2880
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
2881
2912
  end
2882
2913
 
2883
- class Spoom::Sorbet::Sigs::Error < ::Spoom::Error; end
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
2884
2917
 
2885
- class Spoom::Sorbet::Sigs::RBIToRBSTranslator
2886
- class << self
2887
- sig do
2888
- params(
2889
- sig: ::RBI::Sig,
2890
- node: T.any(::RBI::Attr, ::RBI::Method),
2891
- positional_names: T::Boolean
2892
- ).returns(::String)
2893
- end
2894
- def translate(sig, node, positional_names: T.unsafe(nil)); end
2918
+ private
2895
2919
 
2896
- private
2920
+ sig { params(node: ::Prism::Node).returns(T::Boolean) }
2921
+ def at_end_of_line?(node); end
2897
2922
 
2898
- sig { params(sig: ::RBI::Sig, node: ::RBI::Attr, positional_names: T::Boolean).returns(::String) }
2899
- def translate_attr_sig(sig, node, positional_names: T.unsafe(nil)); end
2923
+ sig { params(call: ::Prism::CallNode).void }
2924
+ def build_rbs_annotation(call); end
2900
2925
 
2901
- sig { params(sig: ::RBI::Sig, node: ::RBI::Method, positional_names: T::Boolean).returns(::String) }
2902
- def translate_method_sig(sig, node, positional_names: T.unsafe(nil)); end
2903
- end
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
2904
2934
  end
2905
2935
 
2906
- class Spoom::Sorbet::Sigs::RBSToRBITranslator
2907
- class << self
2908
- sig { params(comment: ::RBI::RBSComment, node: T.any(::RBI::Attr, ::RBI::Method)).returns(T.nilable(::String)) }
2909
- def translate(comment, node); end
2936
+ Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments::LINE_BREAK = T.let(T.unsafe(nil), Integer)
2910
2937
 
2911
- private
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
2912
2944
 
2913
- sig { params(comment: ::RBI::RBSComment, node: ::RBI::Attr).returns(::String) }
2914
- def translate_attr_sig(comment, node); end
2945
+ sig { override.params(node: ::Prism::ClassNode).void }
2946
+ def visit_class_node(node); end
2915
2947
 
2916
- sig { params(rbs_comment: ::RBI::RBSComment, node: ::RBI::Method).returns(::String) }
2917
- def translate_method_sig(rbs_comment, node); end
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
2918
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
2919
3037
  end
2920
3038
 
2921
- class Spoom::Sorbet::Sigs::Scanner
2922
- sig { params(source: ::String).void }
2923
- def initialize(source); end
3039
+ class Spoom::Source::Edit
3040
+ abstract!
3041
+
3042
+ sig { abstract.params(bytes: T::Array[::Integer]).void }
3043
+ def apply(bytes); end
2924
3044
 
2925
- sig { params(line: ::Integer, character: ::Integer).returns(::Integer) }
2926
- def find_char_position(line, character); end
3045
+ sig { abstract.returns([::Integer, ::Integer]) }
3046
+ def range; end
2927
3047
  end
2928
3048
 
2929
- Spoom::Sorbet::Sigs::Scanner::LINE_BREAK = T.let(T.unsafe(nil), Integer)
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
2930
3074
 
2931
- class Spoom::Sorbet::Sigs::SigsLocator < ::RBI::Visitor
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
2932
3094
  sig { void }
2933
3095
  def initialize; end
2934
3096
 
2935
- sig { returns(T::Array[[::RBI::RBSComment, T.any(::RBI::Attr, ::RBI::Method)]]) }
2936
- def rbs_comments; end
3097
+ sig { params(other: ::Spoom::Source::Edit).void }
3098
+ def <<(other); end
2937
3099
 
2938
- sig { returns(T::Array[[::RBI::Sig, T.any(::RBI::Attr, ::RBI::Method)]]) }
2939
- def sigs; end
2940
-
2941
- sig { override.params(node: T.nilable(::RBI::Node)).void }
2942
- def visit(node); end
3100
+ sig { params(bytes: T::Array[::Integer]).void }
3101
+ def rewrite!(bytes); end
2943
3102
  end
2944
3103
 
2945
3104
  class Spoom::Timeline