rigortype 0.4.1 → 0.4.3
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/README.md +1 -1
- data/data/builtins/ruby_core/io.yml +1 -0
- data/data/builtins/ruby_core/proc.yml +4 -0
- data/data/builtins/ruby_core/random.yml +4 -0
- data/data/builtins/ruby_core/struct.yml +3 -0
- data/data/core_overlay/env.rbs +34 -0
- data/data/core_overlay/gc.rbs +50 -0
- data/data/core_overlay/hash.rbs +45 -0
- data/data/core_overlay/integer.rbs +31 -0
- data/data/core_overlay/io_buffer.rbs +27 -0
- data/data/core_overlay/kernel.rbs +40 -0
- data/data/core_overlay/match_data.rbs +28 -0
- data/data/core_overlay/module.rbs +51 -0
- data/data/core_overlay/object_space.rbs +29 -0
- data/data/core_overlay/proc.rbs +45 -0
- data/data/core_overlay/range.rbs +40 -0
- data/data/core_overlay/source_range.rbs +78 -0
- data/data/core_overlay/string.rbs +86 -0
- data/data/vendored_gem_sigs/prime/integer-extension.rbs +41 -0
- data/data/vendored_gem_sigs/prime/prime.rbs +372 -0
- data/docs/handbook/01-getting-started.md +3 -3
- data/docs/handbook/06-classes.md +3 -1
- data/docs/handbook/11-sig-gen.md +18 -5
- data/docs/handbook/appendix-liskov.md +5 -0
- data/docs/manual/02-cli-reference.md +19 -1
- data/docs/manual/03-configuration.md +7 -5
- data/docs/manual/04-diagnostics.md +2 -1
- data/docs/manual/05-inspecting-types.md +50 -0
- data/docs/manual/06-baseline.md +2 -0
- data/docs/manual/07-plugins.md +1 -1
- data/docs/manual/12-caching.md +18 -1
- data/docs/manual/14-rails-quickstart.md +2 -2
- data/docs/manual/18-removing-dead-code.md +41 -4
- data/docs/manual/plugins/README.md +6 -1
- data/docs/manual/plugins/rigor-activerecord.md +21 -0
- data/docs/manual/plugins/rigor-alba.md +60 -0
- data/docs/manual/plugins/rigor-minitest.md +22 -4
- data/docs/manual/plugins/rigor-typelizer.md +71 -0
- data/lib/rigor/analysis/check_rules/ivar_write_collector.rb +27 -3
- data/lib/rigor/analysis/check_rules/lexical_method_sites.rb +21 -92
- data/lib/rigor/analysis/check_rules/ruby_deprecations.rb +275 -0
- data/lib/rigor/analysis/check_rules/rule_ids.rb +11 -0
- data/lib/rigor/analysis/check_rules/source_arity.rb +21 -2
- data/lib/rigor/analysis/check_rules.rb +292 -59
- data/lib/rigor/analysis/dependency_recorder.rb +15 -0
- data/lib/rigor/analysis/dependency_source_inference/builder.rb +8 -1
- data/lib/rigor/analysis/dependency_source_inference/gem_resolver.rb +21 -0
- data/lib/rigor/analysis/dependency_source_inference/index.rb +36 -11
- data/lib/rigor/analysis/dependency_source_inference/walker.rb +196 -27
- data/lib/rigor/analysis/effects_cache_probe.rb +1 -1
- data/lib/rigor/analysis/erb_template_detector.rb +2 -1
- data/lib/rigor/analysis/incremental.rb +29 -9
- data/lib/rigor/analysis/incremental_run_slot/write_guard.rb +30 -5
- data/lib/rigor/analysis/incremental_run_slot.rb +6 -4
- data/lib/rigor/analysis/incremental_session.rb +103 -23
- data/lib/rigor/analysis/path_expansion.rb +62 -6
- data/lib/rigor/analysis/plugin_fact_fingerprint.rb +124 -37
- data/lib/rigor/analysis/reachability/graph.rb +241 -37
- data/lib/rigor/analysis/reachability/scan.rb +490 -77
- data/lib/rigor/analysis/reachability/scan_cache.rb +4 -2
- data/lib/rigor/analysis/rule_catalog.rb +43 -0
- data/lib/rigor/analysis/run_cache_key.rb +16 -1
- data/lib/rigor/analysis/run_cache_probe.rb +1 -1
- data/lib/rigor/analysis/run_stats.rb +28 -6
- data/lib/rigor/analysis/runner/diagnostic_aggregator.rb +113 -6
- data/lib/rigor/analysis/runner/pool_coordinator.rb +77 -19
- data/lib/rigor/analysis/runner/project_pre_passes.rb +21 -1
- data/lib/rigor/analysis/runner/run_snapshots.rb +6 -1
- data/lib/rigor/analysis/runner.rb +62 -13
- data/lib/rigor/analysis/worker_session.rb +8 -5
- data/lib/rigor/cache/engine_source.rb +21 -7
- data/lib/rigor/cache/incremental_snapshot.rb +55 -5
- data/lib/rigor/cli/annotate_command.rb +5 -0
- data/lib/rigor/cli/baseline_command.rb +7 -18
- data/lib/rigor/cli/check_command.rb +140 -40
- data/lib/rigor/cli/docs_command.rb +5 -4
- data/lib/rigor/cli/lens_command.rb +144 -0
- data/lib/rigor/cli/lsp_command.rb +5 -2
- data/lib/rigor/cli/skill_command.rb +3 -3
- data/lib/rigor/cli/skill_describe.rb +1 -1
- data/lib/rigor/cli/trace_command.rb +5 -0
- data/lib/rigor/cli/type_of_command.rb +6 -3
- data/lib/rigor/cli/unused_command.rb +166 -27
- data/lib/rigor/cli.rb +39 -5
- data/lib/rigor/configuration/severity_profile.rb +6 -0
- data/lib/rigor/configuration.rb +61 -2
- data/lib/rigor/environment/bundle_sig_discovery.rb +11 -7
- data/lib/rigor/environment/gated_signature_guard.rb +43 -0
- data/lib/rigor/environment/gated_signature_plan.rb +339 -0
- data/lib/rigor/environment/installed_gem_set.rb +38 -11
- data/lib/rigor/environment/lockfile_resolver.rb +37 -6
- data/lib/rigor/environment/missing_gem_constant_index.rb +22 -7
- data/lib/rigor/environment/rbs_coverage_report.rb +1 -1
- data/lib/rigor/environment/rbs_loader.rb +316 -14
- data/lib/rigor/environment/required_features.rb +208 -0
- data/lib/rigor/environment.rb +33 -8
- data/lib/rigor/inference/acceptance.rb +28 -3
- data/lib/rigor/inference/builtins/cruby_definers.rb +78 -0
- data/lib/rigor/inference/builtins/method_catalog.rb +3 -0
- data/lib/rigor/inference/captured_locals.rb +43 -3
- data/lib/rigor/inference/def_node_resolver.rb +23 -1
- data/lib/rigor/inference/expression_typer.rb +261 -29
- data/lib/rigor/inference/global_write_census.rb +7 -4
- data/lib/rigor/inference/guard_rebinding.rb +1 -1
- data/lib/rigor/inference/in_effect_refinements/proc_literals.rb +83 -0
- data/lib/rigor/inference/in_effect_refinements/refine_defs.rb +54 -0
- data/lib/rigor/inference/in_effect_refinements/scope_reads.rb +286 -0
- data/lib/rigor/inference/in_effect_refinements/walk.rb +276 -0
- data/lib/rigor/inference/in_effect_refinements.rb +256 -0
- data/lib/rigor/inference/key_presence_guard/scan.rb +281 -0
- data/lib/rigor/inference/key_presence_guard.rb +303 -0
- data/lib/rigor/inference/macro_block_self_type.rb +59 -12
- data/lib/rigor/inference/match_rebinding.rb +1 -1
- data/lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb +36 -0
- data/lib/rigor/inference/method_dispatcher/argument_nodes.rb +25 -0
- data/lib/rigor/inference/method_dispatcher/arithmetic_sequence_elements.rb +73 -0
- data/lib/rigor/inference/method_dispatcher/imprecise_argument.rb +68 -0
- data/lib/rigor/inference/method_dispatcher/integer_step_block_params.rb +81 -0
- data/lib/rigor/inference/method_dispatcher/iterator_dispatch.rb +6 -0
- data/lib/rigor/inference/method_dispatcher/kernel_dispatch.rb +3 -2
- data/lib/rigor/inference/method_dispatcher/keyword_arguments.rb +267 -0
- data/lib/rigor/inference/method_dispatcher/match_data_folding.rb +2 -2
- data/lib/rigor/inference/method_dispatcher/member_shape_projection.rb +3 -3
- data/lib/rigor/inference/method_dispatcher/method_folding.rb +2 -1
- data/lib/rigor/inference/method_dispatcher/optional_count.rb +63 -0
- data/lib/rigor/inference/method_dispatcher/overload_selector.rb +122 -105
- data/lib/rigor/inference/method_dispatcher/rbs_dispatch.rb +247 -28
- data/lib/rigor/inference/method_dispatcher/splat_arity.rb +71 -0
- data/lib/rigor/inference/method_dispatcher/struct_folding.rb +4 -7
- data/lib/rigor/inference/method_dispatcher/struct_materialization.rb +8 -26
- data/lib/rigor/inference/method_dispatcher/unit_denominator_rational.rb +67 -0
- data/lib/rigor/inference/method_dispatcher.rb +96 -14
- data/lib/rigor/inference/module_function_state.rb +2 -1
- data/lib/rigor/inference/narrowing.rb +20 -6
- data/lib/rigor/inference/object_mixins.rb +180 -0
- data/lib/rigor/inference/project_patched_definedness_guard.rb +86 -0
- data/lib/rigor/inference/project_patched_methods.rb +12 -7
- data/lib/rigor/inference/project_patched_scanner.rb +108 -26
- data/lib/rigor/inference/refine_census.rb +239 -0
- data/lib/rigor/inference/refine_self.rb +317 -0
- data/lib/rigor/inference/refined_dispatch/class_object.rb +350 -0
- data/lib/rigor/inference/refined_dispatch/own_method.rb +475 -0
- data/lib/rigor/inference/refined_dispatch.rb +320 -0
- data/lib/rigor/inference/repeated_or_writes.rb +2 -0
- data/lib/rigor/inference/scope_indexer/mixin_accumulator.rb +13 -0
- data/lib/rigor/inference/scope_indexer.rb +827 -65
- data/lib/rigor/inference/statement_evaluator.rb +294 -51
- data/lib/rigor/inference/string_mutation.rb +9 -3
- data/lib/rigor/inference/synthetic_method_scanner.rb +2 -1
- data/lib/rigor/inference/untyped_rejoin.rb +75 -0
- data/lib/rigor/inference/version_guard.rb +19 -10
- data/lib/rigor/language_server/project_context.rb +87 -5
- data/lib/rigor/language_server/server.rb +18 -0
- data/lib/rigor/lens/anchor.rb +115 -0
- data/lib/rigor/lens/contract_reader.rb +118 -0
- data/lib/rigor/lens/document.rb +113 -0
- data/lib/rigor/lens/file_reader.rb +433 -0
- data/lib/rigor/lens/members.rb +153 -0
- data/lib/rigor/lens/parameters.rb +91 -0
- data/lib/rigor/lens/plugins.rb +40 -0
- data/lib/rigor/lens/run.rb +280 -0
- data/lib/rigor/lens/slot.rb +79 -0
- data/lib/rigor/lens.rb +40 -0
- data/lib/rigor/plugin/inflector.rb +1 -1
- data/lib/rigor/plugin/io_boundary.rb +42 -3
- data/lib/rigor/plugin/macro/block_as_method.rb +51 -8
- data/lib/rigor/project_environment.rb +48 -6
- data/lib/rigor/protection/mutation_cache.rb +3 -2
- data/lib/rigor/protection/mutator.rb +1 -1
- data/lib/rigor/reflection/constant_ancestors.rb +127 -11
- data/lib/rigor/reflection/constant_path.rb +13 -2
- data/lib/rigor/reflection.rb +40 -8
- data/lib/rigor/scope/discovery_index.rb +40 -1
- data/lib/rigor/scope/resolution_chain.rb +159 -11
- data/lib/rigor/scope.rb +211 -21
- data/lib/rigor/sig_gen/classification.rb +4 -1
- data/lib/rigor/sig_gen/generator.rb +100 -10
- data/lib/rigor/sig_gen/method_candidate.rb +2 -2
- data/lib/rigor/sig_gen/skip_reason_catalog.rb +12 -0
- data/lib/rigor/source/alias_names.rb +52 -0
- data/lib/rigor/source/literals.rb +3 -2
- data/lib/rigor/source/symbol_name.rb +20 -0
- data/lib/rigor/type/combinator.rb +34 -2
- data/lib/rigor/type/float_range.rb +4 -1
- data/lib/rigor/type/nominal.rb +6 -1
- data/lib/rigor/version.rb +1 -1
- data/plugins/rigor-ac-library-rb/lib/rigor/plugin/ac_library_rb.rb +28 -0
- data/plugins/rigor-ac-library-rb/lib/rigor-ac-library-rb.rb +3 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/convolution.rbs +7 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/data_structures.rbs +160 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/graph.rbs +94 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/math.rbs +42 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/modint.rbs +71 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/object.rbs +37 -0
- data/plugins/rigor-ac-library-rb/sig/ac_library_rb/segtree.rbs +83 -0
- data/plugins/rigor-actionpack/lib/rigor/plugin/actionpack/analyzer.rb +2 -1
- data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers/serializer_discoverer.rb +29 -3
- data/plugins/rigor-active-model-serializers/lib/rigor/plugin/active_model_serializers.rb +5 -1
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/association_roots.rb +100 -0
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb +94 -10
- data/plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb +43 -2
- data/plugins/rigor-activerecord/sig/active_record/relation.rbs +3 -1
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_collector.rb +149 -0
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb +74 -0
- data/plugins/rigor-alba/lib/rigor/plugin/alba/resource_index.rb +104 -0
- data/plugins/rigor-alba/lib/rigor/plugin/alba.rb +85 -0
- data/plugins/rigor-alba/lib/rigor-alba.rb +3 -0
- data/plugins/rigor-alba/sig/alba.rbs +4 -0
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi/analyzer.rb +2 -2
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi/target_detector.rb +29 -12
- data/plugins/rigor-ffi/lib/rigor/plugin/ffi.rb +7 -6
- data/plugins/rigor-minitest/lib/rigor/plugin/minitest/assertion_analyzer.rb +130 -21
- data/plugins/rigor-minitest/lib/rigor/plugin/minitest.rb +6 -4
- data/plugins/rigor-pundit/lib/rigor/plugin/pundit/analyzer.rb +4 -4
- data/plugins/rigor-rails-i18n/lib/rigor/plugin/rails_i18n/analyzer.rb +1 -1
- data/plugins/rigor-rails-routes/lib/rigor/plugin/rails_routes/routes_parser.rb +1 -1
- data/plugins/rigor-rbs-inline/lib/rigor/plugin/rbs_inline.rb +31 -0
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_collector.rb +102 -0
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb +87 -0
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_index.rb +76 -0
- data/plugins/rigor-typelizer/lib/rigor/plugin/typelizer.rb +73 -0
- data/plugins/rigor-typelizer/lib/rigor-typelizer.rb +3 -0
- data/sig/rigor/analysis/dependency_source_inference/index.rbs +1 -1
- data/sig/rigor/plugin/io_boundary.rbs +3 -0
- data/sig/rigor/scope.rbs +30 -4
- data/sig/rigor/source.rbs +4 -0
- data/sig/rigor.rbs +9 -4
- data/skills/rigor-project-init/references/02-configure.md +2 -2
- metadata +83 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "rigor/plugin"
|
|
4
|
+
|
|
5
|
+
require_relative "typelizer/serializer_index"
|
|
6
|
+
require_relative "typelizer/serializer_collector"
|
|
7
|
+
require_relative "typelizer/serializer_discoverer"
|
|
8
|
+
|
|
9
|
+
module Rigor
|
|
10
|
+
module Plugin
|
|
11
|
+
# rigor-typelizer — roots the serializer classes the typelizer gem
|
|
12
|
+
# (https://github.com/skryukov/typelizer) generates TypeScript interfaces from, so `rigor unused` does not
|
|
13
|
+
# list them as removal candidates.
|
|
14
|
+
#
|
|
15
|
+
# typelizer's `Typelizer.target_serializers` is `base_classes + base_classes.flat_map(&:descendants)`, where
|
|
16
|
+
# `base_classes` holds every named class that ran `include Typelizer::DSL` or `extend Typelizer::DSL`. Such
|
|
17
|
+
# a class may never be referenced from Ruby and still be consumed by the frontend through the generated
|
|
18
|
+
# type, so the plugin publishes it — and every project subclass of it — as a `:reachability_roots` fact.
|
|
19
|
+
#
|
|
20
|
+
# The plugin adds no diagnostic and no return type. It models nothing at runtime: `reject_class` (a lambda
|
|
21
|
+
# in typelizer's configuration that can drop a class from the output) is not evaluated, so a rejected class
|
|
22
|
+
# is still rooted. That costs a hidden candidate, never a false report.
|
|
23
|
+
class Typelizer < Rigor::Plugin::Base
|
|
24
|
+
manifest(
|
|
25
|
+
id: "typelizer",
|
|
26
|
+
target_gems: ["typelizer"],
|
|
27
|
+
version: "0.1.0",
|
|
28
|
+
description: "Roots the serializer classes typelizer generates TypeScript interfaces from, " \
|
|
29
|
+
"for `rigor unused`.",
|
|
30
|
+
config_schema: {
|
|
31
|
+
# Typelizer::Railtie sets exactly these two when `Typelizer.dirs` is empty.
|
|
32
|
+
"dirs" => { kind: :array, default: %w[app/resources app/serializers] }
|
|
33
|
+
},
|
|
34
|
+
produces: [:reachability_roots]
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
producer :serializer_index, watch: -> { watch_globs } do |_params|
|
|
38
|
+
SerializerDiscoverer.new(io_boundary: io_boundary, dirs: @dirs, project_paths: @project_paths).discover
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def init(services)
|
|
42
|
+
@dirs = Array(config.fetch("dirs")).map(&:to_s)
|
|
43
|
+
@project_paths = Array(services.configuration.paths).map(&:to_s)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def prepare(services)
|
|
47
|
+
index = producer_value(:serializer_index)
|
|
48
|
+
return if index.nil?
|
|
49
|
+
|
|
50
|
+
roots = index.roots
|
|
51
|
+
return if roots.empty?
|
|
52
|
+
|
|
53
|
+
services.fact_store.publish(plugin_id: manifest.id, name: :reachability_roots, value: roots)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
private
|
|
57
|
+
|
|
58
|
+
# Superclass resolution reads every file of the project's `paths:` (a shadowing `Admin::Base` may live
|
|
59
|
+
# outside `dirs`), so all of them are watched, not only `dirs`.
|
|
60
|
+
def watch_globs
|
|
61
|
+
(@dirs + @project_paths).filter_map do |entry|
|
|
62
|
+
if io_boundary.directory?(File.expand_path(entry))
|
|
63
|
+
[entry, "**/*.rb"]
|
|
64
|
+
elsif entry.end_with?(".rb") && io_boundary.file?(File.expand_path(entry))
|
|
65
|
+
[File.dirname(entry), File.basename(entry)]
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
Rigor::Plugin.register(Typelizer)
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -2,7 +2,7 @@ module Rigor
|
|
|
2
2
|
module Analysis
|
|
3
3
|
module DependencySourceInference
|
|
4
4
|
class Index
|
|
5
|
-
def initialize: (?resolved_gems: untyped, ?unresolvable: untyped, ?method_catalog: untyped, ?budget_exceeded: untyped, ?class_to_gem: untyped, ?budget_overrun_strategy: untyped) -> void
|
|
5
|
+
def initialize: (?resolved_gems: untyped, ?unresolvable: untyped, ?method_catalog: untyped, ?budget_exceeded: untyped, ?class_to_gem: untyped, ?budget_overrun_strategy: untyped, ?gem_modes: untyped, ?refinements: untyped) -> void
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
end
|
|
@@ -4,6 +4,9 @@ class Rigor::Plugin::IoBoundary
|
|
|
4
4
|
def file?: (untyped) -> bool
|
|
5
5
|
def directory?: (untyped) -> bool
|
|
6
6
|
def list_directory: (untyped) -> Array[String]
|
|
7
|
+
# Records a `:names` glob row (membership only); a caller needing a match's content `read_file`s it. A `..`
|
|
8
|
+
# segment, a brace or a backslash in `pattern` raises `AccessDeniedError`.
|
|
9
|
+
def glob: (untyped root, untyped pattern) -> Array[String]
|
|
7
10
|
# sig-gen gap: #1156 — the generator pins the empty-summary literal (`count: 0, first_path: nil`); the
|
|
8
11
|
# record's fields are the running count and the first refused path, nil when nothing was refused.
|
|
9
12
|
def refusal_summary: () -> { count: Integer, first_path: String?, nearest_root: String? }?
|
data/sig/rigor/scope.rbs
CHANGED
|
@@ -29,6 +29,10 @@ module Rigor
|
|
|
29
29
|
attr_reader opaque_block_self: bool
|
|
30
30
|
# sig-gen gap: #1154 — sig-gen skips the reader (sig.skipped.untyped-return): an `attr_reader`
|
|
31
31
|
# over an ivar assigned in `initialize` from a parameter, so inference reaches `untyped`.
|
|
32
|
+
# Issue #1759 — `:refinement` (REFINEMENT_BLOCK_SELF) directly in a `refine X do … end` block body.
|
|
33
|
+
attr_reader block_self_unknown: bool | :refinement
|
|
34
|
+
# sig-gen gap: #1154 — sig-gen skips the reader (sig.skipped.untyped-return): an `attr_reader`
|
|
35
|
+
# over an ivar assigned in `initialize` from a parameter, so inference reaches `untyped`.
|
|
32
36
|
attr_reader singleton_class_body: bool
|
|
33
37
|
attr_reader lexical_nesting: Array[String]?
|
|
34
38
|
# Issue #1429 — a guard's narrowing of a constant reference, keyed by its spelling.
|
|
@@ -40,6 +44,9 @@ module Rigor
|
|
|
40
44
|
# Issue #1446 — the classes a class guard narrowed a `bot` receiver to.
|
|
41
45
|
# sig-gen gap: #1154 — a reader over an ivar `initialize` assigns from a parameter.
|
|
42
46
|
attr_reader bot_guard_classes: Hash[[Symbol, Symbol | String], Array[String]]
|
|
47
|
+
# Issue #1667 — the modules a plugin-declared refined block runs under, in declaration order.
|
|
48
|
+
# sig-gen gap: #1154 — a reader over an ivar `initialize` assigns from a parameter.
|
|
49
|
+
attr_reader declared_refinements: Array[String]
|
|
43
50
|
|
|
44
51
|
# ADR-53 Track A — the seed-time discovery tables live on the
|
|
45
52
|
# DiscoveryIndex; Scope keeps per-table readers as delegates.
|
|
@@ -64,8 +71,11 @@ module Rigor
|
|
|
64
71
|
# deferred-range table's row shape is hand-written.
|
|
65
72
|
def discovered_deferred_ranges: () -> Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]]
|
|
66
73
|
# sig-gen gap: #1148 — sig-gen skips the endless-def reader (untyped return), so the refinement table's
|
|
67
|
-
# shape is hand-written.
|
|
68
|
-
def discovered_refinements: () -> Hash[String, Hash[Symbol, Array[String]]]
|
|
74
|
+
# shape is hand-written. A method key is a Symbol or the `"*"` wildcard (ADR-121 WD7).
|
|
75
|
+
def discovered_refinements: () -> Hash[String, Hash[Symbol | String, Array[String]]]
|
|
76
|
+
# authored: the list holds module names and the `InEffectRefinements::UNKNOWN` Symbol; sig-gen reads the delegated
|
|
77
|
+
# return through an unsigned class as untyped.
|
|
78
|
+
def in_effect_refinements: (untyped node, ?Array[String] declared) -> Array[String | Symbol]
|
|
69
79
|
# sig-gen gap: #1148 — sig-gen skips the endless-def reader (untyped return), so the census shape is
|
|
70
80
|
# hand-written.
|
|
71
81
|
def discovered_global_write_census: () -> Set[Array[untyped]]
|
|
@@ -144,7 +154,7 @@ module Rigor
|
|
|
144
154
|
# sig-gen gap: #1150 — `Data.define` members carry no type, as for every other row in this class.
|
|
145
155
|
attr_reader discovered_deferred_ranges: Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]]
|
|
146
156
|
# sig-gen gap: #1150 — `Data.define` members carry no type, as for every other row in this class.
|
|
147
|
-
attr_reader discovered_refinements: Hash[String, Hash[Symbol, Array[String]]]
|
|
157
|
+
attr_reader discovered_refinements: Hash[String, Hash[Symbol | String, Array[String]]]
|
|
148
158
|
# sig-gen gap: #1150 — `Data.define` members carry no type, as for every other row in this class.
|
|
149
159
|
attr_reader discovered_global_write_census: Set[Array[untyped]]
|
|
150
160
|
attr_reader run_generation: Object?
|
|
@@ -157,6 +167,9 @@ module Rigor
|
|
|
157
167
|
# `untyped`: the value is an `Inference::LastLine::SelfEvidence` (or nil), and that class carries no signature,
|
|
158
168
|
# as `Inference::MatchRebinding::Frame` carries none for `match_frame`.
|
|
159
169
|
attr_reader implicit_self_evidence: untyped
|
|
170
|
+
# sig-gen gap: #1150 — `Data.define` members carry no type; the value is an `Inference::InEffectRefinements`
|
|
171
|
+
# (or nil), which carries no signature either.
|
|
172
|
+
attr_reader in_effect_refinements: untyped
|
|
160
173
|
# sig-gen gap: #1150 — `Data.define` members carry no type, as for every other row in this class.
|
|
161
174
|
attr_reader possible_discovered_methods: Hash[String, Hash[Symbol, Symbol]]
|
|
162
175
|
# sig-gen gap: #1150 — `Data.define` members carry no type, as for every other row in this class.
|
|
@@ -188,7 +201,7 @@ module Rigor
|
|
|
188
201
|
# authored: ADR-119 WD1 sibling pairing; no inferred signature exists for it (#1150).
|
|
189
202
|
def sibling_tables: () -> Hash[Symbol, untyped]
|
|
190
203
|
|
|
191
|
-
def with: (?declared_types: Hash[untyped, Type::t], ?class_ivars: Hash[String, Hash[Symbol, Type::t]], ?class_cvars: Hash[String, Hash[Symbol, Type::t]], ?program_globals: Hash[Symbol, Type::t], ?program_global_seeds: Hash[Symbol, Type::t], ?discovered_classes: Hash[String, Type::Singleton], ?in_source_constants: Hash[String, Type::t], ?discovered_methods: Hash[String, Hash[Symbol, Symbol]], ?discovered_def_nodes: Hash[String, Hash[Symbol, untyped]], ?discovered_def_nestings: Hash[untyped, Array[String]], ?discovered_singleton_def_nodes: Hash[String, Hash[Symbol, untyped]], ?discovered_def_sources: Hash[String, Hash[Symbol, String]], ?discovered_singleton_def_sources: Hash[String, Hash[Symbol, String]], ?discovered_method_visibilities: Hash[String, Hash[Symbol, Symbol]], ?discovered_parameter_envelopes: Hash[String, Hash[untyped, untyped]], ?discovered_superclasses: Hash[String, String], ?discovered_includes: Hash[String, Array[String]], ?discovered_prepends: Hash[String, Array[String]], ?discovered_extends: Hash[String, Array[String]], ?discovered_class_sources: Hash[String, Set[String]], ?constant_sources: Hash[String, Set[String]], ?constant_writers: Hash[String, Array[String]], ?constant_shadowers: Hash[String, Array[String]], ?published_constant_names: Set[String], ?local_constant_names: Set[String], ?published_constant_alias_names: Set[String], ?published_constant_ivars: Hash[String, Set[Symbol]], ?data_member_layouts: Hash[String, Array[Symbol]], ?struct_member_layouts: Hash[String, { members: Array[Symbol], keyword_init: bool }], ?param_inferred_types: Hash[[String, Symbol, Symbol], Hash[Symbol, Type::t]], ?discovered_deferred_ranges: Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]], ?discovered_refinements: Hash[String, Hash[Symbol, Array[String]]], ?discovered_global_write_census: Set[Array[untyped]], ?run_generation: Object?, ?patched_line_readers: Set[Symbol], ?clears_last_status: bool, ?defines_case_equality: bool, ?implicit_self_evidence: untyped, ?possible_discovered_methods: Hash[String, Hash[Symbol, Symbol]], ?possible_discovered_deferred_ranges: Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]], ?contested_discovered_def_nodes: Set[Array[untyped]], ?contested_discovered_singleton_def_nodes: Set[Array[untyped]], ?contested_discovered_method_visibilities: Set[Array[untyped]], ?contested_discovered_parameter_envelopes: Set[Array[untyped]]) -> DiscoveryIndex
|
|
204
|
+
def with: (?declared_types: Hash[untyped, Type::t], ?class_ivars: Hash[String, Hash[Symbol, Type::t]], ?class_cvars: Hash[String, Hash[Symbol, Type::t]], ?program_globals: Hash[Symbol, Type::t], ?program_global_seeds: Hash[Symbol, Type::t], ?discovered_classes: Hash[String, Type::Singleton], ?in_source_constants: Hash[String, Type::t], ?discovered_methods: Hash[String, Hash[Symbol, Symbol]], ?discovered_def_nodes: Hash[String, Hash[Symbol, untyped]], ?discovered_def_nestings: Hash[untyped, Array[String]], ?discovered_singleton_def_nodes: Hash[String, Hash[Symbol, untyped]], ?discovered_def_sources: Hash[String, Hash[Symbol, String]], ?discovered_singleton_def_sources: Hash[String, Hash[Symbol, String]], ?discovered_method_visibilities: Hash[String, Hash[Symbol, Symbol]], ?discovered_parameter_envelopes: Hash[String, Hash[untyped, untyped]], ?discovered_superclasses: Hash[String, String], ?discovered_includes: Hash[String, Array[String]], ?discovered_prepends: Hash[String, Array[String]], ?discovered_extends: Hash[String, Array[String]], ?discovered_class_sources: Hash[String, Set[String]], ?constant_sources: Hash[String, Set[String]], ?constant_writers: Hash[String, Array[String]], ?constant_shadowers: Hash[String, Array[String]], ?published_constant_names: Set[String], ?local_constant_names: Set[String], ?published_constant_alias_names: Set[String], ?published_constant_ivars: Hash[String, Set[Symbol]], ?data_member_layouts: Hash[String, Array[Symbol]], ?struct_member_layouts: Hash[String, { members: Array[Symbol], keyword_init: bool }], ?param_inferred_types: Hash[[String, Symbol, Symbol], Hash[Symbol, Type::t]], ?discovered_deferred_ranges: Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]], ?discovered_refinements: Hash[String, Hash[Symbol | String, Array[String]]], ?discovered_global_write_census: Set[Array[untyped]], ?run_generation: Object?, ?patched_line_readers: Set[Symbol], ?clears_last_status: bool, ?defines_case_equality: bool, ?implicit_self_evidence: untyped, ?in_effect_refinements: untyped, ?possible_discovered_methods: Hash[String, Hash[Symbol, Symbol]], ?possible_discovered_deferred_ranges: Hash[String, Array[[Integer, Integer, Symbol?, Symbol?, String?]]], ?contested_discovered_def_nodes: Set[Array[untyped]], ?contested_discovered_singleton_def_nodes: Set[Array[untyped]], ?contested_discovered_method_visibilities: Set[Array[untyped]], ?contested_discovered_parameter_envelopes: Set[Array[untyped]]) -> DiscoveryIndex
|
|
192
205
|
end
|
|
193
206
|
|
|
194
207
|
class IndexedKey
|
|
@@ -211,8 +224,15 @@ module Rigor
|
|
|
211
224
|
def with_lexical_nesting: (Array[String]? chain) -> Scope
|
|
212
225
|
def struct_fold_safe?: (String | Symbol name) -> bool
|
|
213
226
|
def entering_opaque_block: () -> Scope
|
|
227
|
+
# sig-gen gap: #1148 — sig-gen skips the endless-def reader (sig.skipped.untyped-return); the row is hand-written.
|
|
228
|
+
def block_self_unknown?: () -> bool
|
|
229
|
+
REFINEMENT_BLOCK_SELF: :refinement
|
|
230
|
+
# sig-gen gap: #1148 — sig-gen skips the endless-def predicate (sig.skipped.untyped-return); the row is hand-written.
|
|
231
|
+
def refinement_block_self?: () -> bool
|
|
232
|
+
def with_block_self_unknown: (bool flag) -> Scope
|
|
214
233
|
def opaque_block_self?: () -> bool
|
|
215
234
|
def with_singleton_class_body: (bool) -> Scope
|
|
235
|
+
def with_declared_refinements: (Array[String] names) -> Scope
|
|
216
236
|
# sig-gen gap: #1148 — sig-gen skips the endless-def reader (sig.skipped.untyped-return); the row is hand-written.
|
|
217
237
|
def singleton_class_body?: () -> bool
|
|
218
238
|
def with_discovery: (DiscoveryIndex index) -> Scope
|
|
@@ -227,6 +247,7 @@ module Rigor
|
|
|
227
247
|
def optimistic_local_miss: (String | Symbol name) -> Object?
|
|
228
248
|
def optimistic_ivar_miss: (String | Symbol name) -> Object?
|
|
229
249
|
def with_local: (String | Symbol name, Type::t type) -> Scope
|
|
250
|
+
def with_rejoined_locals: (untyped) -> Rigor::Scope
|
|
230
251
|
def with_ivar: (String | Symbol name, Type::t type) -> Scope
|
|
231
252
|
def with_local_origin: (String | Symbol name, Symbol? cause) -> Scope
|
|
232
253
|
def with_optimistic_local: (String | Symbol name, Symbol? cause, ?miss: Object?) -> Scope
|
|
@@ -279,6 +300,8 @@ module Rigor
|
|
|
279
300
|
def inferred_param?: (String | Symbol name) -> bool
|
|
280
301
|
def forget_match_globals: () -> Scope
|
|
281
302
|
def untyped_match_globals: () -> Scope
|
|
303
|
+
# sig-gen gap: #1154 — the reader over the `@globals` ivar `initialize` assigns from a parameter reaches
|
|
304
|
+
# `untyped`, so the `bool` is hand-written.
|
|
282
305
|
def match_globals_bound?: () -> bool
|
|
283
306
|
def with_match_frame: (untyped body, ?untyped parameters) -> Scope
|
|
284
307
|
# sig-gen gap: #1154 — the frame reader over an ivar assigned in `initialize` from a parameter reaches
|
|
@@ -337,6 +360,7 @@ module Rigor
|
|
|
337
360
|
def singleton_extends_of: (String | Symbol class_name) -> Array[String]
|
|
338
361
|
def indexed_narrowing: (Symbol receiver_kind, String | Symbol receiver_name, untyped key) -> Type::t?
|
|
339
362
|
def with_indexed_narrowing: (Symbol receiver_kind, String | Symbol receiver_name, untyped key, Type::t type) -> Scope
|
|
363
|
+
def with_isolated_side_tables: () -> Scope
|
|
340
364
|
def without_indexed_narrowing: (Symbol receiver_kind, String | Symbol receiver_name, untyped key) -> Scope
|
|
341
365
|
def without_indexed_narrowings_for: (Symbol receiver_kind, String | Symbol receiver_name) -> Scope
|
|
342
366
|
def method_chain_narrowing: (Symbol receiver_kind, String | Symbol receiver_name, String | Symbol method_name) -> Type::t?
|
|
@@ -345,6 +369,8 @@ module Rigor
|
|
|
345
369
|
def without_method_chain_narrowings_for: (Symbol receiver_kind, String | Symbol receiver_name) -> Scope
|
|
346
370
|
def with_fact: (Analysis::FactStore::Fact fact) -> Scope
|
|
347
371
|
def with_self_type: (Type::t? type) -> Scope
|
|
372
|
+
def with_block_self_type: (Type::t? type, ?keeps_unknown: bool | :refinement) -> Scope
|
|
373
|
+
def block_self_narrowing_unknown?: (Prism::CallNode call_node) -> bool
|
|
348
374
|
def facts_for: (?target: Analysis::FactStore::Target?, ?bucket: Symbol?) -> Array[Analysis::FactStore::Fact]
|
|
349
375
|
def local_facts: (String | Symbol name, ?bucket: Symbol?) -> Array[Analysis::FactStore::Fact]
|
|
350
376
|
def type_of: (untyped node, ?tracer: Inference::FallbackTracer?) -> Type::t
|
data/sig/rigor/source.rbs
CHANGED
|
@@ -21,6 +21,10 @@ module Rigor
|
|
|
21
21
|
def self?.symbol_arg: (untyped? call_node, Integer index) -> Symbol?
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
+
module SymbolName
|
|
25
|
+
def self?.of: (String? text) -> Symbol?
|
|
26
|
+
end
|
|
27
|
+
|
|
24
28
|
module NodeWalker
|
|
25
29
|
def self?.each: (untyped root) { (untyped) -> void } -> nil
|
|
26
30
|
| (untyped root) -> Enumerator[untyped, nil]
|
data/sig/rigor.rbs
CHANGED
|
@@ -14,7 +14,9 @@ module Rigor
|
|
|
14
14
|
def self.load: (?String? path) -> Configuration
|
|
15
15
|
def self.discover: () -> String?
|
|
16
16
|
def self.load_with_includes: (String path, ?visited: Set[String]) -> Hash[String, untyped]
|
|
17
|
-
def initialize: (?Hash[String, untyped] data, ?bool effects_key_present) -> void
|
|
17
|
+
def initialize: (?Hash[String, untyped] data, ?bool effects_key_present, ?bool target_ruby_key_present) -> void
|
|
18
|
+
def target_ruby_explicit?: () -> bool
|
|
19
|
+
def stated_runtime_ruby: () -> String?
|
|
18
20
|
def to_h: () -> Hash[String, untyped]
|
|
19
21
|
# ADR-103 WD13 — the `effects:` block, nil when the key was absent. Presence is the opt-in.
|
|
20
22
|
attr_reader effects: Hash[String, untyped]?
|
|
@@ -81,7 +83,6 @@ module Rigor
|
|
|
81
83
|
|
|
82
84
|
class RunStats
|
|
83
85
|
attr_reader wall_seconds: Float
|
|
84
|
-
attr_reader peak_rss_bytes: Integer?
|
|
85
86
|
attr_reader target_files: Integer
|
|
86
87
|
attr_reader rbs_classes_total: Integer
|
|
87
88
|
attr_reader rbs_classes_project_sig: Integer
|
|
@@ -91,21 +92,25 @@ module Rigor
|
|
|
91
92
|
attr_reader rbs_attribution_available: bool
|
|
92
93
|
|
|
93
94
|
CACHED_SENTINEL: String
|
|
95
|
+
CURRENT_PROCESS_PEAK_RSS: ^() -> Integer?
|
|
94
96
|
|
|
97
|
+
# authored: #1529 memoised lazy read; its type enters only through the deliberate `peak_rss_probe:` initialize parameter.
|
|
98
|
+
def peak_rss_bytes: () -> Integer?
|
|
95
99
|
def self.peak_rss_bytes: () -> Integer?
|
|
96
100
|
def self.partition_classes: (class_decl_paths: Hash[String, String], signature_paths: Array[untyped]) -> [Integer, Integer]
|
|
97
101
|
def self.attribution_available?: (class_decl_paths: Hash[String, String]) -> bool
|
|
98
102
|
|
|
99
103
|
def initialize: (
|
|
100
104
|
wall_seconds: Float,
|
|
101
|
-
peak_rss_bytes: Integer?,
|
|
102
105
|
target_files: Integer,
|
|
103
106
|
rbs_classes_total: Integer,
|
|
104
107
|
rbs_classes_project_sig: Integer,
|
|
105
108
|
rbs_classes_bundled: Integer,
|
|
106
109
|
gem_walk_classes: Integer,
|
|
107
110
|
gem_walk_gems: Integer,
|
|
108
|
-
?rbs_attribution_available: bool
|
|
111
|
+
?rbs_attribution_available: bool,
|
|
112
|
+
?peak_rss_bytes: Integer?,
|
|
113
|
+
?peak_rss_probe: ^() -> Integer?
|
|
109
114
|
) -> void
|
|
110
115
|
def format: (untyped out, ?prefix: String) -> void
|
|
111
116
|
def to_h: () -> Hash[Symbol, untyped]
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rigortype
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rigor contributors
|
|
@@ -310,12 +310,25 @@ files:
|
|
|
310
310
|
- data/core_overlay/csv.rbs
|
|
311
311
|
- data/core_overlay/enumerable.rbs
|
|
312
312
|
- data/core_overlay/enumerator.rbs
|
|
313
|
+
- data/core_overlay/env.rbs
|
|
314
|
+
- data/core_overlay/gc.rbs
|
|
315
|
+
- data/core_overlay/hash.rbs
|
|
313
316
|
- data/core_overlay/hash_rbs3.rbs
|
|
317
|
+
- data/core_overlay/integer.rbs
|
|
318
|
+
- data/core_overlay/io_buffer.rbs
|
|
319
|
+
- data/core_overlay/kernel.rbs
|
|
320
|
+
- data/core_overlay/match_data.rbs
|
|
321
|
+
- data/core_overlay/module.rbs
|
|
314
322
|
- data/core_overlay/numeric.rbs
|
|
323
|
+
- data/core_overlay/object_space.rbs
|
|
315
324
|
- data/core_overlay/pathname.rbs
|
|
325
|
+
- data/core_overlay/proc.rbs
|
|
316
326
|
- data/core_overlay/process.rbs
|
|
317
327
|
- data/core_overlay/psych.rbs
|
|
328
|
+
- data/core_overlay/range.rbs
|
|
318
329
|
- data/core_overlay/resolv.rbs
|
|
330
|
+
- data/core_overlay/source_range.rbs
|
|
331
|
+
- data/core_overlay/string.rbs
|
|
319
332
|
- data/core_overlay/string_io.rbs
|
|
320
333
|
- data/core_overlay/string_scanner.rbs
|
|
321
334
|
- data/effects/core.yml
|
|
@@ -334,6 +347,8 @@ files:
|
|
|
334
347
|
- data/vendored_gem_sigs/nokogiri/nokogiri.rbs
|
|
335
348
|
- data/vendored_gem_sigs/nokogiri/nokogiri_html5.rbs
|
|
336
349
|
- data/vendored_gem_sigs/pg/pg.rbs
|
|
350
|
+
- data/vendored_gem_sigs/prime/integer-extension.rbs
|
|
351
|
+
- data/vendored_gem_sigs/prime/prime.rbs
|
|
337
352
|
- data/vendored_gem_sigs/prism/prism_supplement.rbs
|
|
338
353
|
- data/vendored_gem_sigs/racc/racc.rbs
|
|
339
354
|
- data/vendored_gem_sigs/redis/errors.rbs
|
|
@@ -398,6 +413,7 @@ files:
|
|
|
398
413
|
- docs/manual/plugins/rigor-activerecord.md
|
|
399
414
|
- docs/manual/plugins/rigor-activestorage.md
|
|
400
415
|
- docs/manual/plugins/rigor-activesupport-core-ext.md
|
|
416
|
+
- docs/manual/plugins/rigor-alba.md
|
|
401
417
|
- docs/manual/plugins/rigor-devise.md
|
|
402
418
|
- docs/manual/plugins/rigor-dry-schema.md
|
|
403
419
|
- docs/manual/plugins/rigor-dry-struct.md
|
|
@@ -421,6 +437,7 @@ files:
|
|
|
421
437
|
- docs/manual/plugins/rigor-sinatra.md
|
|
422
438
|
- docs/manual/plugins/rigor-sorbet.md
|
|
423
439
|
- docs/manual/plugins/rigor-statesman.md
|
|
440
|
+
- docs/manual/plugins/rigor-typelizer.md
|
|
424
441
|
- docs/manual/plugins/rigor-typescript-utility-types.md
|
|
425
442
|
- exe/rigor
|
|
426
443
|
- lib/rigor.rb
|
|
@@ -438,6 +455,7 @@ files:
|
|
|
438
455
|
- lib/rigor/analysis/check_rules/main_pass_collector.rb
|
|
439
456
|
- lib/rigor/analysis/check_rules/published_constant_guard.rb
|
|
440
457
|
- lib/rigor/analysis/check_rules/return_in_ensure_collector.rb
|
|
458
|
+
- lib/rigor/analysis/check_rules/ruby_deprecations.rb
|
|
441
459
|
- lib/rigor/analysis/check_rules/rule_ids.rb
|
|
442
460
|
- lib/rigor/analysis/check_rules/rule_walk.rb
|
|
443
461
|
- lib/rigor/analysis/check_rules/self_closedness_scanner.rb
|
|
@@ -546,6 +564,7 @@ files:
|
|
|
546
564
|
- lib/rigor/cli/explain_command.rb
|
|
547
565
|
- lib/rigor/cli/fused_protection_renderer.rb
|
|
548
566
|
- lib/rigor/cli/fused_protection_report.rb
|
|
567
|
+
- lib/rigor/cli/lens_command.rb
|
|
549
568
|
- lib/rigor/cli/lsp_command.rb
|
|
550
569
|
- lib/rigor/cli/mcp_command.rb
|
|
551
570
|
- lib/rigor/cli/measurement_integrity_warning.rb
|
|
@@ -632,6 +651,8 @@ files:
|
|
|
632
651
|
- lib/rigor/environment/constant_type_cache_holder.rb
|
|
633
652
|
- lib/rigor/environment/default_libraries.rb
|
|
634
653
|
- lib/rigor/environment/failure_slot.rb
|
|
654
|
+
- lib/rigor/environment/gated_signature_guard.rb
|
|
655
|
+
- lib/rigor/environment/gated_signature_plan.rb
|
|
635
656
|
- lib/rigor/environment/hkt_registry_holder.rb
|
|
636
657
|
- lib/rigor/environment/installed_gem_set.rb
|
|
637
658
|
- lib/rigor/environment/lockfile_resolver.rb
|
|
@@ -644,6 +665,7 @@ files:
|
|
|
644
665
|
- lib/rigor/environment/rbs_loader.rb
|
|
645
666
|
- lib/rigor/environment/reflection.rb
|
|
646
667
|
- lib/rigor/environment/reporters.rb
|
|
668
|
+
- lib/rigor/environment/required_features.rb
|
|
647
669
|
- lib/rigor/environment/source_rbs_synthesis.rb
|
|
648
670
|
- lib/rigor/flow_contribution.rb
|
|
649
671
|
- lib/rigor/flow_contribution/conflict.rb
|
|
@@ -663,6 +685,7 @@ files:
|
|
|
663
685
|
- lib/rigor/inference/builtins/array_catalog.rb
|
|
664
686
|
- lib/rigor/inference/builtins/comparable_catalog.rb
|
|
665
687
|
- lib/rigor/inference/builtins/complex_catalog.rb
|
|
688
|
+
- lib/rigor/inference/builtins/cruby_definers.rb
|
|
666
689
|
- lib/rigor/inference/builtins/date_catalog.rb
|
|
667
690
|
- lib/rigor/inference/builtins/encoding_catalog.rb
|
|
668
691
|
- lib/rigor/inference/builtins/enumerable_catalog.rb
|
|
@@ -712,9 +735,16 @@ files:
|
|
|
712
735
|
- lib/rigor/inference/hkt_reducer.rb
|
|
713
736
|
- lib/rigor/inference/hkt_registry.rb
|
|
714
737
|
- lib/rigor/inference/hkt_sugar_translator.rb
|
|
738
|
+
- lib/rigor/inference/in_effect_refinements.rb
|
|
739
|
+
- lib/rigor/inference/in_effect_refinements/proc_literals.rb
|
|
740
|
+
- lib/rigor/inference/in_effect_refinements/refine_defs.rb
|
|
741
|
+
- lib/rigor/inference/in_effect_refinements/scope_reads.rb
|
|
742
|
+
- lib/rigor/inference/in_effect_refinements/walk.rb
|
|
715
743
|
- lib/rigor/inference/index_write_widening.rb
|
|
716
744
|
- lib/rigor/inference/indexed_narrowing.rb
|
|
717
745
|
- lib/rigor/inference/jump_targets.rb
|
|
746
|
+
- lib/rigor/inference/key_presence_guard.rb
|
|
747
|
+
- lib/rigor/inference/key_presence_guard/scan.rb
|
|
718
748
|
- lib/rigor/inference/last_line.rb
|
|
719
749
|
- lib/rigor/inference/last_line/implicit_self.rb
|
|
720
750
|
- lib/rigor/inference/last_line/self_evidence.rb
|
|
@@ -727,6 +757,8 @@ files:
|
|
|
727
757
|
- lib/rigor/inference/match_rebinding/self_calls.rb
|
|
728
758
|
- lib/rigor/inference/method_dispatcher.rb
|
|
729
759
|
- lib/rigor/inference/method_dispatcher/alias_strict_nominals.rb
|
|
760
|
+
- lib/rigor/inference/method_dispatcher/argument_nodes.rb
|
|
761
|
+
- lib/rigor/inference/method_dispatcher/arithmetic_sequence_elements.rb
|
|
730
762
|
- lib/rigor/inference/method_dispatcher/array_to_h_folding.rb
|
|
731
763
|
- lib/rigor/inference/method_dispatcher/block_folding.rb
|
|
732
764
|
- lib/rigor/inference/method_dispatcher/call_context.rb
|
|
@@ -736,14 +768,18 @@ files:
|
|
|
736
768
|
- lib/rigor/inference/method_dispatcher/facet_distribution.rb
|
|
737
769
|
- lib/rigor/inference/method_dispatcher/file_folding.rb
|
|
738
770
|
- lib/rigor/inference/method_dispatcher/hash_transform_keys_folding.rb
|
|
771
|
+
- lib/rigor/inference/method_dispatcher/imprecise_argument.rb
|
|
772
|
+
- lib/rigor/inference/method_dispatcher/integer_step_block_params.rb
|
|
739
773
|
- lib/rigor/inference/method_dispatcher/iterator_dispatch.rb
|
|
740
774
|
- lib/rigor/inference/method_dispatcher/json_folding.rb
|
|
741
775
|
- lib/rigor/inference/method_dispatcher/kernel_dispatch.rb
|
|
776
|
+
- lib/rigor/inference/method_dispatcher/keyword_arguments.rb
|
|
742
777
|
- lib/rigor/inference/method_dispatcher/literal_string_folding.rb
|
|
743
778
|
- lib/rigor/inference/method_dispatcher/match_data_folding.rb
|
|
744
779
|
- lib/rigor/inference/method_dispatcher/math_folding.rb
|
|
745
780
|
- lib/rigor/inference/method_dispatcher/member_shape_projection.rb
|
|
746
781
|
- lib/rigor/inference/method_dispatcher/method_folding.rb
|
|
782
|
+
- lib/rigor/inference/method_dispatcher/optional_count.rb
|
|
747
783
|
- lib/rigor/inference/method_dispatcher/overload_selector.rb
|
|
748
784
|
- lib/rigor/inference/method_dispatcher/process_folding.rb
|
|
749
785
|
- lib/rigor/inference/method_dispatcher/proven_overload.rb
|
|
@@ -758,9 +794,11 @@ files:
|
|
|
758
794
|
- lib/rigor/inference/method_dispatcher/shellwords_folding.rb
|
|
759
795
|
- lib/rigor/inference/method_dispatcher/singleton_folding.rb
|
|
760
796
|
- lib/rigor/inference/method_dispatcher/singleton_mixin_dispatch.rb
|
|
797
|
+
- lib/rigor/inference/method_dispatcher/splat_arity.rb
|
|
761
798
|
- lib/rigor/inference/method_dispatcher/struct_folding.rb
|
|
762
799
|
- lib/rigor/inference/method_dispatcher/struct_materialization.rb
|
|
763
800
|
- lib/rigor/inference/method_dispatcher/time_folding.rb
|
|
801
|
+
- lib/rigor/inference/method_dispatcher/unit_denominator_rational.rb
|
|
764
802
|
- lib/rigor/inference/method_dispatcher/universal_object_dispatch.rb
|
|
765
803
|
- lib/rigor/inference/method_dispatcher/uri_folding.rb
|
|
766
804
|
- lib/rigor/inference/method_parameter_binder.rb
|
|
@@ -769,6 +807,7 @@ files:
|
|
|
769
807
|
- lib/rigor/inference/mutation_rejoin.rb
|
|
770
808
|
- lib/rigor/inference/mutation_widening.rb
|
|
771
809
|
- lib/rigor/inference/narrowing.rb
|
|
810
|
+
- lib/rigor/inference/object_mixins.rb
|
|
772
811
|
- lib/rigor/inference/operand_effects.rb
|
|
773
812
|
- lib/rigor/inference/operand_walk.rb
|
|
774
813
|
- lib/rigor/inference/optimistic_origin.rb
|
|
@@ -777,6 +816,7 @@ files:
|
|
|
777
816
|
- lib/rigor/inference/pre_eval_constants.rb
|
|
778
817
|
- lib/rigor/inference/precision_scanner.rb
|
|
779
818
|
- lib/rigor/inference/project_method_ownership.rb
|
|
819
|
+
- lib/rigor/inference/project_patched_definedness_guard.rb
|
|
780
820
|
- lib/rigor/inference/project_patched_methods.rb
|
|
781
821
|
- lib/rigor/inference/project_patched_scanner.rb
|
|
782
822
|
- lib/rigor/inference/protection_scanner.rb
|
|
@@ -784,6 +824,11 @@ files:
|
|
|
784
824
|
- lib/rigor/inference/rbs_type_translator.rb
|
|
785
825
|
- lib/rigor/inference/receiver_alias.rb
|
|
786
826
|
- lib/rigor/inference/receiver_blind_block.rb
|
|
827
|
+
- lib/rigor/inference/refine_census.rb
|
|
828
|
+
- lib/rigor/inference/refine_self.rb
|
|
829
|
+
- lib/rigor/inference/refined_dispatch.rb
|
|
830
|
+
- lib/rigor/inference/refined_dispatch/class_object.rb
|
|
831
|
+
- lib/rigor/inference/refined_dispatch/own_method.rb
|
|
787
832
|
- lib/rigor/inference/refinement_mutation.rb
|
|
788
833
|
- lib/rigor/inference/repeated_or_writes.rb
|
|
789
834
|
- lib/rigor/inference/return_barrier.rb
|
|
@@ -807,6 +852,7 @@ files:
|
|
|
807
852
|
- lib/rigor/inference/synthetic_method_scanner.rb
|
|
808
853
|
- lib/rigor/inference/unknown_store_widening.rb
|
|
809
854
|
- lib/rigor/inference/unthreaded_rebinds.rb
|
|
855
|
+
- lib/rigor/inference/untyped_rejoin.rb
|
|
810
856
|
- lib/rigor/inference/version_guard.rb
|
|
811
857
|
- lib/rigor/inference/void_origin.rb
|
|
812
858
|
- lib/rigor/inference/void_tail_summary.rb
|
|
@@ -829,6 +875,16 @@ files:
|
|
|
829
875
|
- lib/rigor/language_server/signature_help_provider.rb
|
|
830
876
|
- lib/rigor/language_server/synchronized_writer.rb
|
|
831
877
|
- lib/rigor/language_server/uri.rb
|
|
878
|
+
- lib/rigor/lens.rb
|
|
879
|
+
- lib/rigor/lens/anchor.rb
|
|
880
|
+
- lib/rigor/lens/contract_reader.rb
|
|
881
|
+
- lib/rigor/lens/document.rb
|
|
882
|
+
- lib/rigor/lens/file_reader.rb
|
|
883
|
+
- lib/rigor/lens/members.rb
|
|
884
|
+
- lib/rigor/lens/parameters.rb
|
|
885
|
+
- lib/rigor/lens/plugins.rb
|
|
886
|
+
- lib/rigor/lens/run.rb
|
|
887
|
+
- lib/rigor/lens/slot.rb
|
|
832
888
|
- lib/rigor/mcp.rb
|
|
833
889
|
- lib/rigor/mcp/loop.rb
|
|
834
890
|
- lib/rigor/mcp/server.rb
|
|
@@ -914,12 +970,14 @@ files:
|
|
|
914
970
|
- lib/rigor/sig_gen/writer.rb
|
|
915
971
|
- lib/rigor/signature_path_audit.rb
|
|
916
972
|
- lib/rigor/source.rb
|
|
973
|
+
- lib/rigor/source/alias_names.rb
|
|
917
974
|
- lib/rigor/source/constant_path.rb
|
|
918
975
|
- lib/rigor/source/literals.rb
|
|
919
976
|
- lib/rigor/source/node_children.rb
|
|
920
977
|
- lib/rigor/source/node_locator.rb
|
|
921
978
|
- lib/rigor/source/node_walker.rb
|
|
922
979
|
- lib/rigor/source/parameter_envelope.rb
|
|
980
|
+
- lib/rigor/source/symbol_name.rb
|
|
923
981
|
- lib/rigor/testing.rb
|
|
924
982
|
- lib/rigor/triage.rb
|
|
925
983
|
- lib/rigor/triage/catalogue.rb
|
|
@@ -967,6 +1025,15 @@ files:
|
|
|
967
1025
|
- lib/rigor/value_semantics.rb
|
|
968
1026
|
- lib/rigor/version.rb
|
|
969
1027
|
- lib/rigortype.rb
|
|
1028
|
+
- plugins/rigor-ac-library-rb/lib/rigor-ac-library-rb.rb
|
|
1029
|
+
- plugins/rigor-ac-library-rb/lib/rigor/plugin/ac_library_rb.rb
|
|
1030
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/convolution.rbs
|
|
1031
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/data_structures.rbs
|
|
1032
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/graph.rbs
|
|
1033
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/math.rbs
|
|
1034
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/modint.rbs
|
|
1035
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/object.rbs
|
|
1036
|
+
- plugins/rigor-ac-library-rb/sig/ac_library_rb/segtree.rbs
|
|
970
1037
|
- plugins/rigor-actioncable/lib/rigor-actioncable.rb
|
|
971
1038
|
- plugins/rigor-actioncable/lib/rigor/plugin/actioncable.rb
|
|
972
1039
|
- plugins/rigor-actioncable/lib/rigor/plugin/actioncable/analyzer.rb
|
|
@@ -1007,6 +1074,7 @@ files:
|
|
|
1007
1074
|
- plugins/rigor-activerecord/lib/rigor-activerecord.rb
|
|
1008
1075
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord.rb
|
|
1009
1076
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/analyzer.rb
|
|
1077
|
+
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/association_roots.rb
|
|
1010
1078
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/effects.rb
|
|
1011
1079
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_discoverer.rb
|
|
1012
1080
|
- plugins/rigor-activerecord/lib/rigor/plugin/activerecord/model_index.rb
|
|
@@ -1025,6 +1093,12 @@ files:
|
|
|
1025
1093
|
- plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext.rb
|
|
1026
1094
|
- plugins/rigor-activesupport-core-ext/lib/rigor/plugin/activesupport_core_ext/effects.rb
|
|
1027
1095
|
- plugins/rigor-activesupport-core-ext/sig/active_support/core_ext.rbs
|
|
1096
|
+
- plugins/rigor-alba/lib/rigor-alba.rb
|
|
1097
|
+
- plugins/rigor-alba/lib/rigor/plugin/alba.rb
|
|
1098
|
+
- plugins/rigor-alba/lib/rigor/plugin/alba/resource_collector.rb
|
|
1099
|
+
- plugins/rigor-alba/lib/rigor/plugin/alba/resource_discoverer.rb
|
|
1100
|
+
- plugins/rigor-alba/lib/rigor/plugin/alba/resource_index.rb
|
|
1101
|
+
- plugins/rigor-alba/sig/alba.rbs
|
|
1028
1102
|
- plugins/rigor-devise/lib/rigor-devise.rb
|
|
1029
1103
|
- plugins/rigor-devise/lib/rigor/plugin/devise.rb
|
|
1030
1104
|
- plugins/rigor-dry-monads/lib/rigor-dry-monads.rb
|
|
@@ -1150,6 +1224,11 @@ files:
|
|
|
1150
1224
|
- plugins/rigor-sorbet/sig/sorbet.rbs
|
|
1151
1225
|
- plugins/rigor-statesman/lib/rigor-statesman.rb
|
|
1152
1226
|
- plugins/rigor-statesman/lib/rigor/plugin/statesman.rb
|
|
1227
|
+
- plugins/rigor-typelizer/lib/rigor-typelizer.rb
|
|
1228
|
+
- plugins/rigor-typelizer/lib/rigor/plugin/typelizer.rb
|
|
1229
|
+
- plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_collector.rb
|
|
1230
|
+
- plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_discoverer.rb
|
|
1231
|
+
- plugins/rigor-typelizer/lib/rigor/plugin/typelizer/serializer_index.rb
|
|
1153
1232
|
- plugins/rigor-typescript-utility-types/lib/rigor-typescript-utility-types.rb
|
|
1154
1233
|
- plugins/rigor-typescript-utility-types/lib/rigor/plugin/typescript_utility_types.rb
|
|
1155
1234
|
- sig/prism_node_children.rbs
|
|
@@ -1267,6 +1346,7 @@ post_install_message: |
|
|
|
1267
1346
|
rdoc_options: []
|
|
1268
1347
|
require_paths:
|
|
1269
1348
|
- lib
|
|
1349
|
+
- plugins/rigor-ac-library-rb/lib
|
|
1270
1350
|
- plugins/rigor-actioncable/lib
|
|
1271
1351
|
- plugins/rigor-actionmailer/lib
|
|
1272
1352
|
- plugins/rigor-actionpack/lib
|
|
@@ -1275,6 +1355,7 @@ require_paths:
|
|
|
1275
1355
|
- plugins/rigor-activerecord/lib
|
|
1276
1356
|
- plugins/rigor-activestorage/lib
|
|
1277
1357
|
- plugins/rigor-activesupport-core-ext/lib
|
|
1358
|
+
- plugins/rigor-alba/lib
|
|
1278
1359
|
- plugins/rigor-devise/lib
|
|
1279
1360
|
- plugins/rigor-dry-monads/lib
|
|
1280
1361
|
- plugins/rigor-dry-schema/lib
|
|
@@ -1305,6 +1386,7 @@ require_paths:
|
|
|
1305
1386
|
- plugins/rigor-sinatra/lib
|
|
1306
1387
|
- plugins/rigor-sorbet/lib
|
|
1307
1388
|
- plugins/rigor-statesman/lib
|
|
1389
|
+
- plugins/rigor-typelizer/lib
|
|
1308
1390
|
- plugins/rigor-typescript-utility-types/lib
|
|
1309
1391
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
1310
1392
|
requirements:
|