From 954151e770829c2542c10425146a01ea4b918658 Mon Sep 17 00:00:00 2001 From: Alexandre Terrasa Date: Fri, 25 Sep 2026 09:29:28 -0400 Subject: [PATCH] Collect metrics for inexact and immutable structs --- lib/spoom/sorbet/metrics/code_metrics_visitor.rb | 4 ++++ test/spoom/sorbet/metrics/code_metrics_visitor_test.rb | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/spoom/sorbet/metrics/code_metrics_visitor.rb b/lib/spoom/sorbet/metrics/code_metrics_visitor.rb index 088c17a6..0ab7bf32 100644 --- a/lib/spoom/sorbet/metrics/code_metrics_visitor.rb +++ b/lib/spoom/sorbet/metrics/code_metrics_visitor.rb @@ -76,6 +76,10 @@ def visit_class_node(node) case node.superclass&.slice when /^(::)?T::Struct$/ @counters.increment("t_structs") + when /^(::)?T::InexactStruct$/ + @counters.increment("t_inexact_structs") + when /^(::)?T::ImmutableStruct$/ + @counters.increment("t_immutable_structs") when /^(::)?T::Enum$/ @counters.increment("t_enums") end diff --git a/test/spoom/sorbet/metrics/code_metrics_visitor_test.rb b/test/spoom/sorbet/metrics/code_metrics_visitor_test.rb index 00e27b37..91ebef3f 100644 --- a/test/spoom/sorbet/metrics/code_metrics_visitor_test.rb +++ b/test/spoom/sorbet/metrics/code_metrics_visitor_test.rb @@ -39,14 +39,20 @@ def test_collects_metrics_about_sorbet_structs_and_enums context.write!("foo.rb", <<~RUBY) class Struct < T::Struct; end class RootStruct < ::T::Struct; end + class InexactStruct < T::InexactStruct; end + class RootInexactStruct < ::T::InexactStruct; end + class ImmutableStruct < T::ImmutableStruct; end + class RootImmutableStruct < ::T::ImmutableStruct; end class Enum < T::Enum; end class RootEnum < ::T::Enum; end class Other; end RUBY end - assert_equal(5, metrics["classes"]) + assert_equal(9, metrics["classes"]) assert_equal(2, metrics["t_structs"]) + assert_equal(2, metrics["t_inexact_structs"]) + assert_equal(2, metrics["t_immutable_structs"]) assert_equal(2, metrics["t_enums"]) end