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.
- checksums.yaml +4 -4
- data/lib/spoom/cli/srb/assertions.rb +1 -1
- data/lib/spoom/cli/srb/metrics.rb +68 -0
- data/lib/spoom/cli/srb/sigs.rb +8 -10
- data/lib/spoom/cli/srb.rb +4 -0
- data/lib/spoom/context/sorbet.rb +1 -1
- data/lib/spoom/counters.rb +22 -0
- data/lib/spoom/deadcode/index.rb +2 -2
- data/lib/spoom/deadcode/plugins/active_record.rb +19 -0
- data/lib/spoom/model/builder.rb +10 -15
- data/lib/spoom/model/model.rb +1 -1
- data/lib/spoom/parse.rb +4 -18
- data/lib/spoom/rbs.rb +77 -0
- data/lib/spoom/sorbet/metrics/code_metrics_visitor.rb +236 -0
- data/lib/spoom/sorbet/metrics/metrics_file_parser.rb +34 -0
- data/lib/spoom/sorbet/metrics.rb +2 -30
- data/lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb +239 -0
- data/lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb +123 -0
- data/lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb +293 -0
- data/lib/spoom/sorbet/translate/strip_sorbet_sigs.rb +23 -0
- data/lib/spoom/sorbet/translate/translator.rb +71 -0
- data/lib/spoom/sorbet/translate.rb +49 -0
- data/lib/spoom/sorbet.rb +1 -1
- data/lib/spoom/source/rewriter.rb +167 -0
- data/lib/spoom/source.rb +4 -0
- data/lib/spoom/version.rb +1 -1
- data/lib/spoom.rb +3 -0
- data/rbi/spoom.rbi +337 -178
- metadata +29 -4
- data/lib/spoom/sorbet/assertions.rb +0 -278
- data/lib/spoom/sorbet/sigs.rb +0 -281
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
|
2104
|
-
def initialize(model, file
|
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:
|
2471
|
+
sig { params(value: T.untyped).returns(Spoom::Poset::Element[T.untyped]) }
|
2458
2472
|
def [](value); end
|
2459
2473
|
|
2460
|
-
sig { params(from:
|
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:
|
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:
|
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:
|
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:
|
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
|
-
|
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[
|
2505
|
+
sig { returns(T::Array[T.untyped]) }
|
2495
2506
|
def ancestors; end
|
2496
2507
|
|
2497
|
-
sig { returns(T::Array[
|
2508
|
+
sig { returns(T::Array[T.untyped]) }
|
2498
2509
|
def children; end
|
2499
2510
|
|
2500
|
-
sig { returns(T::Array[
|
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[
|
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[
|
2521
|
+
sig { returns(T::Array[T.untyped]) }
|
2511
2522
|
def parents; end
|
2512
2523
|
|
2513
2524
|
def tos; end
|
2514
2525
|
|
2515
|
-
sig { returns(
|
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::
|
2558
|
-
|
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
|
-
|
2568
|
-
|
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
|
2576
|
+
def location; end
|
2593
2577
|
|
2594
2578
|
sig { returns(::String) }
|
2595
|
-
def
|
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::
|
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::
|
2610
|
-
def
|
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
|
2590
|
+
def empty?; end
|
2663
2591
|
|
2664
|
-
sig {
|
2665
|
-
def
|
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::
|
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(
|
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::
|
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
|
-
|
2858
|
+
module Spoom::Sorbet::Translate
|
2863
2859
|
class << self
|
2864
|
-
sig { params(ruby_contents: ::String,
|
2865
|
-
def
|
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
|
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
|
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
|
-
|
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
|
-
|
2876
|
-
|
2879
|
+
sig { override.params(node: ::Prism::CallNode).void }
|
2880
|
+
def visit_call_node(node); end
|
2877
2881
|
|
2878
|
-
|
2879
|
-
|
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::
|
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
|
-
|
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
|
-
|
2920
|
+
sig { params(node: ::Prism::Node).returns(T::Boolean) }
|
2921
|
+
def at_end_of_line?(node); end
|
2897
2922
|
|
2898
|
-
|
2899
|
-
|
2923
|
+
sig { params(call: ::Prism::CallNode).void }
|
2924
|
+
def build_rbs_annotation(call); end
|
2900
2925
|
|
2901
|
-
|
2902
|
-
|
2903
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
2914
|
-
|
2945
|
+
sig { override.params(node: ::Prism::ClassNode).void }
|
2946
|
+
def visit_class_node(node); end
|
2915
2947
|
|
2916
|
-
|
2917
|
-
|
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::
|
2922
|
-
|
2923
|
-
|
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 {
|
2926
|
-
def
|
3045
|
+
sig { abstract.returns([::Integer, ::Integer]) }
|
3046
|
+
def range; end
|
2927
3047
|
end
|
2928
3048
|
|
2929
|
-
Spoom::
|
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
|
-
|
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 {
|
2936
|
-
def
|
3097
|
+
sig { params(other: ::Spoom::Source::Edit).void }
|
3098
|
+
def <<(other); end
|
2937
3099
|
|
2938
|
-
sig {
|
2939
|
-
def
|
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
|