Merge pull request #20309 from Homebrew/dependabot/all-f8dbd9efe6
Bump the "all" group with 3 updates across multiple ecosystems
This commit is contained in:
commit
4d14be89e9
2
.github/workflows/actionlint.yml
vendored
2
.github/workflows/actionlint.yml
vendored
@ -93,7 +93,7 @@ jobs:
|
||||
path: results.sarif
|
||||
|
||||
- name: Upload SARIF file
|
||||
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
|
||||
uses: github/codeql-action/upload-sarif@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
category: zizmor
|
||||
|
4
.github/workflows/codeql-analysis.yml
vendored
4
.github/workflows/codeql-analysis.yml
vendored
@ -27,7 +27,7 @@ jobs:
|
||||
persist-credentials: false
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
|
||||
uses: github/codeql-action/init@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
|
||||
with:
|
||||
languages: ruby
|
||||
config: |
|
||||
@ -35,4 +35,4 @@ jobs:
|
||||
- Library/Homebrew/vendor
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
|
||||
uses: github/codeql-action/analyze@4e828ff8d448a8a6e532957b1811f387a63867e8 # v3.29.4
|
||||
|
@ -32,9 +32,9 @@ GEM
|
||||
minitest (5.25.5)
|
||||
netrc (0.11.0)
|
||||
parallel (1.27.0)
|
||||
parallel_tests (5.3.0)
|
||||
parallel_tests (5.3.1)
|
||||
parallel
|
||||
parser (3.3.8.0)
|
||||
parser (3.3.9.0)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
patchelf (1.5.1)
|
||||
@ -90,7 +90,7 @@ GEM
|
||||
rubocop-ast (>= 1.45.1, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.45.1)
|
||||
rubocop-ast (1.46.0)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.4)
|
||||
rubocop-md (2.0.1)
|
||||
@ -124,16 +124,16 @@ GEM
|
||||
simplecov-html (0.13.2)
|
||||
simplecov_json_formatter (0.1.4)
|
||||
simpleidn (0.2.3)
|
||||
sorbet (0.5.12230)
|
||||
sorbet-static (= 0.5.12230)
|
||||
sorbet-runtime (0.5.12230)
|
||||
sorbet-static (0.5.12230-aarch64-linux)
|
||||
sorbet-static (0.5.12230-universal-darwin)
|
||||
sorbet-static (0.5.12230-x86_64-linux)
|
||||
sorbet-static-and-runtime (0.5.12230)
|
||||
sorbet (= 0.5.12230)
|
||||
sorbet-runtime (= 0.5.12230)
|
||||
spoom (1.7.4)
|
||||
sorbet (0.5.12357)
|
||||
sorbet-static (= 0.5.12357)
|
||||
sorbet-runtime (0.5.12357)
|
||||
sorbet-static (0.5.12357-aarch64-linux)
|
||||
sorbet-static (0.5.12357-universal-darwin)
|
||||
sorbet-static (0.5.12357-x86_64-linux)
|
||||
sorbet-static-and-runtime (0.5.12357)
|
||||
sorbet (= 0.5.12357)
|
||||
sorbet-runtime (= 0.5.12357)
|
||||
spoom (1.7.5)
|
||||
erubi (>= 1.10.0)
|
||||
prism (>= 0.28.0)
|
||||
rbi (>= 0.3.3)
|
||||
@ -167,7 +167,8 @@ GEM
|
||||
PLATFORMS
|
||||
aarch64-linux
|
||||
arm-linux
|
||||
universal-darwin
|
||||
arm64-darwin
|
||||
x86_64-darwin
|
||||
x86_64-linux
|
||||
|
||||
DEPENDENCIES
|
||||
@ -219,4 +220,4 @@ RUBY VERSION
|
||||
ruby 3.4.5p51
|
||||
|
||||
BUNDLED WITH
|
||||
2.6.9
|
||||
2.6.8
|
||||
|
@ -4,9 +4,9 @@
|
||||
#
|
||||
# pip-compile --allow-unsafe --generate-hashes --strip-extras requirements.in
|
||||
#
|
||||
certifi==2025.7.9 \
|
||||
--hash=sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079 \
|
||||
--hash=sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39
|
||||
certifi==2025.7.14 \
|
||||
--hash=sha256:6b31f564a415d79ee77df69d757bb49a5bb53bd9f756cbbe24394ffd6fc1f4b2 \
|
||||
--hash=sha256:8ea99dbdfaaf2ba2f9bac77b9249ef62ec5218e7c2b2e903378ed5fccf765995
|
||||
# via influxdb3-python
|
||||
influxdb3-python==0.14.0 \
|
||||
--hash=sha256:63318c1eb53e026d1d793ef00fef51510acd40dd80bd69b528bf05332757dc67 \
|
||||
|
@ -235,7 +235,7 @@ class RuboCop::AST::AsgnNode < ::RuboCop::AST::Node
|
||||
end
|
||||
|
||||
# Common functionality for primitive literal nodes: `sym`, `str`,
|
||||
# `int`, `float`, `rational`...
|
||||
# `int`, `float`, `rational`, `complex`...
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/node/mixin/basic_literal_node.rb#7
|
||||
module RuboCop::AST::BasicLiteralNode
|
||||
@ -452,7 +452,7 @@ end
|
||||
# parser = Parser::Ruby25.new(builder)
|
||||
# root_node = parser.parse(buffer)
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#128
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#129
|
||||
class RuboCop::AST::Builder < ::Parser::Builders::Default
|
||||
include ::RuboCop::AST::BuilderExtensions
|
||||
end
|
||||
@ -468,7 +468,7 @@ module RuboCop::AST::BuilderExtensions
|
||||
# @api private
|
||||
# @return [Node] the generated node
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#100
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#101
|
||||
def n(type, children, source_map); end
|
||||
|
||||
# Overwrite the base method to allow strings with invalid encoding
|
||||
@ -476,14 +476,14 @@ module RuboCop::AST::BuilderExtensions
|
||||
#
|
||||
# @api private
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#106
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#107
|
||||
def string_value(token); end
|
||||
|
||||
private
|
||||
|
||||
# @api private
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#112
|
||||
# source://rubocop-ast//lib/rubocop/ast/builder.rb#113
|
||||
def node_klass(type); end
|
||||
|
||||
class << self
|
||||
@ -1088,6 +1088,16 @@ end
|
||||
# source://rubocop-ast//lib/rubocop/ast/node/mixin/collection_node.rb#9
|
||||
RuboCop::AST::CollectionNode::ARRAY_METHODS = T.let(T.unsafe(nil), Array)
|
||||
|
||||
# A node extension for `complex` nodes. This will be used in place of a plain
|
||||
# node when the builder constructs the AST, making its methods available to
|
||||
# all `complex` nodes within RuboCop.
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/node/complex_node.rb#8
|
||||
class RuboCop::AST::ComplexNode < ::RuboCop::AST::Node
|
||||
include ::RuboCop::AST::BasicLiteralNode
|
||||
include ::RuboCop::AST::NumericNode
|
||||
end
|
||||
|
||||
# Common functionality for nodes that have conditions:
|
||||
# `if`, `while`, `until`, `case`.
|
||||
# This currently doesn't include `when` nodes, because they have multiple
|
||||
@ -5828,7 +5838,7 @@ RuboCop::AST::NodePattern::Sets::SET_____2 = T.let(T.unsafe(nil), Set)
|
||||
# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#55
|
||||
RuboCop::AST::NodePattern::VAR = T.let(T.unsafe(nil), String)
|
||||
|
||||
# Common functionality for primitive numeric nodes: `int`, `float`, `rational`...
|
||||
# Common functionality for primitive numeric nodes: `int`, `float`, `rational`, `complex`...
|
||||
#
|
||||
# source://rubocop-ast//lib/rubocop/ast/node/mixin/numeric_node.rb#6
|
||||
module RuboCop::AST::NumericNode
|
@ -9,7 +9,7 @@
|
||||
|
||||
# DO NOT EDIT MANUALLY
|
||||
# This is an autogenerated file for types exported from the `spoom` gem.
|
||||
# Please instead update this file by running `spoom srb sigs export`.
|
||||
# Please instead update this file by running `bundle exec spoom srb sigs export`.
|
||||
|
||||
# source://spoom//lib/spoom.rb#7
|
||||
module Spoom
|
||||
@ -189,10 +189,10 @@ class Spoom::Cli::Srb::Assertions < ::Thor
|
||||
# source://spoom//lib/spoom/cli/srb.rb#17
|
||||
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/assertions.rb#29
|
||||
# source://spoom//lib/spoom/cli/srb/assertions.rb#42
|
||||
def transform_files(files, &block); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/assertions.rb#13
|
||||
# source://spoom//lib/spoom/cli/srb/assertions.rb#18
|
||||
def translate(*paths); end
|
||||
end
|
||||
|
||||
@ -353,22 +353,22 @@ class Spoom::Cli::Srb::Sigs < ::Thor
|
||||
include ::Spoom::Colorize
|
||||
include ::Spoom::Cli::Helper
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#216
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#222
|
||||
def exec(context, command); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#87
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#93
|
||||
def export(output_path = T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb.rb#32
|
||||
def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#68
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#74
|
||||
def strip(*paths); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#193
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#199
|
||||
def transform_files(files, &block); end
|
||||
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#20
|
||||
# source://spoom//lib/spoom/cli/srb/sigs.rb#23
|
||||
def translate(*paths); end
|
||||
end
|
||||
|
||||
@ -898,6 +898,7 @@ class Spoom::Coverage::Cards::Erb < ::Spoom::Coverage::Cards::Card
|
||||
def initialize; end
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/coverage/report.rb#109
|
||||
sig { abstract.returns(::String) }
|
||||
@ -1062,6 +1063,7 @@ class Spoom::Coverage::D3::Base
|
||||
def id; end
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/coverage/d3/base.rb#45
|
||||
sig { abstract.returns(::String) }
|
||||
@ -1230,6 +1232,7 @@ class Spoom::Coverage::D3::Timeline < ::Spoom::Coverage::D3::Base
|
||||
def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/coverage/d3/timeline.rb#122
|
||||
sig { abstract.returns(::String) }
|
||||
@ -1404,6 +1407,7 @@ class Spoom::Coverage::Page < ::Spoom::Coverage::Template
|
||||
def body_html; end
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/coverage/report.rb#73
|
||||
sig { abstract.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
|
||||
@ -3152,6 +3156,7 @@ module Spoom::LSP::PrintableSymbol
|
||||
interface!
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/lsp/structures.rb#13
|
||||
sig { abstract.params(printer: ::Spoom::LSP::SymbolPrinter).void }
|
||||
@ -4702,30 +4707,43 @@ module Spoom::Sorbet::Translate
|
||||
# Converts all the RBS comments in the given Ruby code to `sig` nodes.
|
||||
# It also handles type members and class annotations.
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#36
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#57
|
||||
sig { params(ruby_contents: ::String, file: ::String, max_line_length: T.nilable(::Integer)).returns(::String) }
|
||||
def rbs_comments_to_sorbet_sigs(ruby_contents, file:, max_line_length: T.unsafe(nil)); end
|
||||
|
||||
# Converts all `T.let` and `T.cast` nodes to RBS comments in the given Ruby code.
|
||||
# It also handles type members and class annotations.
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#43
|
||||
sig { params(ruby_contents: ::String, file: ::String).returns(::String) }
|
||||
def sorbet_assertions_to_rbs_comments(ruby_contents, file:); end
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#72
|
||||
sig do
|
||||
params(
|
||||
ruby_contents: ::String,
|
||||
file: ::String,
|
||||
translate_t_let: T::Boolean,
|
||||
translate_t_cast: T::Boolean,
|
||||
translate_t_bind: T::Boolean,
|
||||
translate_t_must: T::Boolean,
|
||||
translate_t_unsafe: T::Boolean
|
||||
).returns(::String)
|
||||
end
|
||||
def sorbet_assertions_to_rbs_comments(ruby_contents, file:, translate_t_let: T.unsafe(nil), translate_t_cast: T.unsafe(nil), translate_t_bind: T.unsafe(nil), translate_t_must: T.unsafe(nil), translate_t_unsafe: T.unsafe(nil)); end
|
||||
|
||||
# Converts all `sig` nodes to RBS comments in the given Ruby code.
|
||||
# It also handles type members and class annotations.
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#29
|
||||
# source://spoom//lib/spoom/sorbet/translate.rb#37
|
||||
sig do
|
||||
params(
|
||||
ruby_contents: ::String,
|
||||
file: ::String,
|
||||
positional_names: T::Boolean,
|
||||
max_line_length: T.nilable(::Integer)
|
||||
max_line_length: T.nilable(::Integer),
|
||||
translate_generics: T::Boolean,
|
||||
translate_helpers: T::Boolean,
|
||||
translate_abstract_methods: T::Boolean
|
||||
).returns(::String)
|
||||
end
|
||||
def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil)); end
|
||||
def sorbet_sigs_to_rbs_comments(ruby_contents, file:, positional_names: T.unsafe(nil), max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
|
||||
|
||||
# Deletes all `sig` nodes from the given Ruby code.
|
||||
# It doesn't handle type members and class annotations.
|
||||
@ -4749,7 +4767,7 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Trans
|
||||
sig { params(ruby_contents: ::String, file: ::String, max_line_length: T.nilable(::Integer)).void }
|
||||
def initialize(ruby_contents, file:, max_line_length: T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#73
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#49
|
||||
sig { override.params(node: ::Prism::CallNode).void }
|
||||
def visit_call_node(node); end
|
||||
|
||||
@ -4773,7 +4791,7 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Trans
|
||||
|
||||
# @return [Boolean]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#242
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#260
|
||||
sig do
|
||||
params(
|
||||
node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
|
||||
@ -4782,15 +4800,19 @@ class Spoom::Sorbet::Translate::RBSCommentsToSorbetSigs < ::Spoom::Sorbet::Trans
|
||||
end
|
||||
def already_extends?(node, constant_regex); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#123
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#141
|
||||
sig { params(node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode)).void }
|
||||
def apply_class_annotations(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#221
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#239
|
||||
sig { params(annotations: T::Array[::Spoom::RBS::Annotation], sig: ::RBI::Sig).void }
|
||||
def apply_member_annotations(annotations, sig); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#85
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#105
|
||||
sig { params(def_node: ::Prism::DefNode, comments: ::Spoom::RBS::Comments).void }
|
||||
def rewrite_def(def_node, comments); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/rbs_comments_to_sorbet_sigs.rb#67
|
||||
sig { params(node: ::Prism::CallNode).void }
|
||||
def visit_attr(node); end
|
||||
end
|
||||
@ -4799,11 +4821,27 @@ end
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#8
|
||||
class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet::Translate::Translator
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#22
|
||||
# @return [SorbetAssertionsToRBSComments] a new instance of SorbetAssertionsToRBSComments
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#20
|
||||
sig do
|
||||
params(
|
||||
ruby_contents: ::String,
|
||||
file: ::String,
|
||||
translate_t_let: T::Boolean,
|
||||
translate_t_cast: T::Boolean,
|
||||
translate_t_bind: T::Boolean,
|
||||
translate_t_must: T::Boolean,
|
||||
translate_t_unsafe: T::Boolean
|
||||
).void
|
||||
end
|
||||
def initialize(ruby_contents, file:, translate_t_let: T.unsafe(nil), translate_t_cast: T.unsafe(nil), translate_t_bind: T.unsafe(nil), translate_t_must: T.unsafe(nil), translate_t_unsafe: T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#49
|
||||
sig { override.params(node: ::Prism::IfNode).void }
|
||||
def visit_if_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#13
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#40
|
||||
sig { override.params(node: ::Prism::StatementsNode).void }
|
||||
def visit_statements_node(node); end
|
||||
|
||||
@ -4811,19 +4849,19 @@ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet:
|
||||
|
||||
# @return [Boolean]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#135
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#166
|
||||
sig { params(node: ::Prism::Node).returns(T::Boolean) }
|
||||
def at_end_of_line?(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#81
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#108
|
||||
sig { params(call: ::Prism::CallNode).returns(::String) }
|
||||
def build_rbs_annotation(call); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#142
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#173
|
||||
sig { params(assign: ::Prism::Node, value: ::Prism::Node).returns(::String) }
|
||||
def dedent_value(assign, value); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#44
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#71
|
||||
sig { params(node: ::Prism::Node).returns(T::Boolean) }
|
||||
def maybe_translate_assertion(node); end
|
||||
|
||||
@ -4831,7 +4869,7 @@ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet:
|
||||
#
|
||||
# @return [Boolean]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#106
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#133
|
||||
sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) }
|
||||
def t?(node); end
|
||||
|
||||
@ -4839,9 +4877,9 @@ class Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments < ::Spoom::Sorbet:
|
||||
#
|
||||
# @return [Boolean]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#119
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#146
|
||||
sig { params(node: ::Prism::CallNode).returns(T::Boolean) }
|
||||
def t_annotation?(node); end
|
||||
def translatable_annotation?(node); end
|
||||
end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_assertions_to_rbs_comments.rb#9
|
||||
@ -4854,44 +4892,47 @@ Spoom::Sorbet::Translate::SorbetAssertionsToRBSComments::LINE_BREAK = T.let(T.un
|
||||
class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Translate::Translator
|
||||
# @return [SorbetSigsToRBSComments] a new instance of SorbetSigsToRBSComments
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#11
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#19
|
||||
sig do
|
||||
params(
|
||||
ruby_contents: ::String,
|
||||
file: ::String,
|
||||
positional_names: T::Boolean,
|
||||
max_line_length: T.nilable(::Integer)
|
||||
max_line_length: T.nilable(::Integer),
|
||||
translate_generics: T::Boolean,
|
||||
translate_helpers: T::Boolean,
|
||||
translate_abstract_methods: T::Boolean
|
||||
).void
|
||||
end
|
||||
def initialize(ruby_contents, file:, positional_names:, max_line_length: T.unsafe(nil)); end
|
||||
def initialize(ruby_contents, file:, positional_names:, max_line_length: T.unsafe(nil), translate_generics: T.unsafe(nil), translate_helpers: T.unsafe(nil), translate_abstract_methods: T.unsafe(nil)); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#66
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#100
|
||||
sig { override.params(node: ::Prism::CallNode).void }
|
||||
def visit_call_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#26
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#46
|
||||
sig { override.params(node: ::Prism::ClassNode).void }
|
||||
def visit_class_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#85
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#119
|
||||
sig { override.params(node: ::Prism::ConstantWriteNode).void }
|
||||
def visit_constant_write_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#44
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#64
|
||||
sig { override.params(node: ::Prism::DefNode).void }
|
||||
def visit_def_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#32
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#52
|
||||
sig { override.params(node: ::Prism::ModuleNode).void }
|
||||
def visit_module_node(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#38
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#58
|
||||
sig { override.params(node: ::Prism::SingletonClassNode).void }
|
||||
def visit_singleton_class_node(node); end
|
||||
|
||||
private
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#193
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#233
|
||||
sig do
|
||||
params(
|
||||
parent: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
|
||||
@ -4900,45 +4941,45 @@ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Trans
|
||||
end
|
||||
def apply_class_annotation(parent, node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#234
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#274
|
||||
sig { params(sigs: T::Array[[::Prism::CallNode, ::RBI::Sig]]).void }
|
||||
def apply_member_annotations(sigs); end
|
||||
|
||||
# @raise [Error]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#266
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#308
|
||||
sig { params(node: ::Prism::ConstantWriteNode).returns(::String) }
|
||||
def build_type_member_string(node); end
|
||||
|
||||
# Collects the last signatures visited and clears the current list
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#337
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#379
|
||||
sig { returns(T::Array[[::Prism::CallNode, ::RBI::Sig]]) }
|
||||
def collect_last_sigs; end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#324
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#366
|
||||
sig { void }
|
||||
def delete_extend_t_generics; end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#312
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#354
|
||||
sig { void }
|
||||
def delete_extend_t_helpers; end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#344
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#386
|
||||
sig { params(indent: ::Integer, block: T.proc.params(arg0: ::RBI::RBSPrinter).void).returns(::String) }
|
||||
def rbs_print(indent, &block); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#151
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#191
|
||||
sig { params(node: ::Prism::CallNode).void }
|
||||
def visit_attr(node); end
|
||||
|
||||
# @raise [Error]
|
||||
#
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#175
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#215
|
||||
sig { params(node: ::Prism::CallNode).void }
|
||||
def visit_extend(node); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#102
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#138
|
||||
sig do
|
||||
params(
|
||||
node: T.any(::Prism::ClassNode, ::Prism::ModuleNode, ::Prism::SingletonClassNode),
|
||||
@ -4947,7 +4988,7 @@ class Spoom::Sorbet::Translate::SorbetSigsToRBSComments < ::Spoom::Sorbet::Trans
|
||||
end
|
||||
def visit_scope(node, &block); end
|
||||
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#139
|
||||
# source://spoom//lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb#179
|
||||
sig { params(node: ::Prism::CallNode).void }
|
||||
def visit_sig(node); end
|
||||
end
|
||||
@ -5062,12 +5103,14 @@ class Spoom::Source::Edit
|
||||
abstract!
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/source/rewriter.rb#32
|
||||
sig { abstract.params(bytes: T::Array[::Integer]).void }
|
||||
def apply(bytes); end
|
||||
|
||||
# @abstract
|
||||
# @raise [NotImplementedError]
|
||||
#
|
||||
# source://spoom//lib/spoom/source/rewriter.rb#36
|
||||
sig { abstract.returns([::Integer, ::Integer]) }
|
@ -10,7 +10,7 @@ Homebrew::FastBootRequire.from_rubylibdir("English")
|
||||
module Homebrew
|
||||
# Keep in sync with the `Gemfile.lock`'s BUNDLED WITH.
|
||||
# After updating this, run `brew vendor-gems --update=--bundler`.
|
||||
HOMEBREW_BUNDLER_VERSION = "2.6.9"
|
||||
HOMEBREW_BUNDLER_VERSION = "2.6.8" # Pinned to <2.6.9 until Ruby 3.5.
|
||||
|
||||
# Bump this whenever a committed vendored gem is later added to or exclusion removed from gitignore.
|
||||
# This will trigger it to reinstall properly if `brew install-bundler-gems` needs it.
|
||||
|
16
Library/Homebrew/vendor/bundle/bundler/setup.rb
vendored
16
Library/Homebrew/vendor/bundle/bundler/setup.rb
vendored
@ -64,10 +64,10 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/minitest-5.25.5/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/netrc-0.11.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parallel-1.27.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parallel_tests-5.3.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parallel_tests-5.3.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/racc-1.8.1")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/racc-1.8.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parser-3.3.8.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/parser-3.3.9.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/patchelf-1.5.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/plist-3.7.2/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/prism-1.4.0")
|
||||
@ -89,10 +89,10 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-3.13.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-github-3.0.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-retry-0.6.2/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-runtime-0.5.12230/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-runtime-0.5.12357/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec-sorbet-1.9.2/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rspec_junit_formatter-0.6.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rubocop-ast-1.45.1/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/rubocop-ast-1.46.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/ruby-progressbar-1.13.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/unicode-emoji-4.0.4/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/unicode-display_width-3.1.4/lib")
|
||||
@ -109,11 +109,11 @@ $:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov_json_formatter-0.1.4/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov-0.22.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/simplecov-cobertura-2.1.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-0.5.12230-universal-darwin/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-0.5.12230/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-and-runtime-0.5.12230/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-0.5.12357-universal-darwin/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-0.5.12357/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/sorbet-static-and-runtime-0.5.12357/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/thor-1.4.0/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/spoom-1.7.4/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/spoom-1.7.5/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/arm64-darwin-20/#{Gem.extension_api_version}/stackprof-0.2.27")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/stackprof-0.2.27/lib")
|
||||
$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/yard-0.9.37/lib")
|
||||
|
@ -545,15 +545,15 @@ module T::Private::Methods
|
||||
|
||||
module MethodHooks
|
||||
def method_added(name)
|
||||
super(name)
|
||||
::T::Private::Methods._on_method_added(self, self, name)
|
||||
super(name)
|
||||
end
|
||||
end
|
||||
|
||||
module SingletonMethodHooks
|
||||
def singleton_method_added(name)
|
||||
super(name)
|
||||
::T::Private::Methods._on_method_added(self, singleton_class, name)
|
||||
super(name)
|
||||
end
|
||||
end
|
||||
|
@ -14,12 +14,28 @@ class T::Props::Decorator
|
||||
DecoratedInstance = T.type_alias { Object } # Would be T::Props, but that produces circular reference errors in some circumstances
|
||||
PropType = T.type_alias { T::Types::Base }
|
||||
PropTypeOrClass = T.type_alias { T.any(PropType, Module) }
|
||||
OverrideRules = T.type_alias { T::Hash[Symbol, {allow_incompatible: T::Boolean}] }
|
||||
|
||||
class NoRulesError < StandardError; end
|
||||
|
||||
EMPTY_PROPS = T.let({}.freeze, T::Hash[Symbol, Rules], checked: false)
|
||||
private_constant :EMPTY_PROPS
|
||||
|
||||
OVERRIDE_TRUE = T.let({
|
||||
reader: {allow_incompatible: false}.freeze,
|
||||
writer: {allow_incompatible: false}.freeze,
|
||||
}.freeze, OverrideRules)
|
||||
|
||||
OVERRIDE_READER = T.let({
|
||||
reader: {allow_incompatible: false}.freeze,
|
||||
}.freeze, OverrideRules)
|
||||
|
||||
OVERRIDE_WRITER = T.let({
|
||||
writer: {allow_incompatible: false}.freeze,
|
||||
}.freeze, OverrideRules)
|
||||
|
||||
OVERRIDE_EMPTY = T.let({}.freeze, OverrideRules)
|
||||
|
||||
sig { params(klass: T.untyped).void.checked(:never) }
|
||||
def initialize(klass)
|
||||
@class = T.let(klass, T.all(Module, T::Props::ClassMethods))
|
||||
@ -45,17 +61,15 @@ class T::Props::Decorator
|
||||
end
|
||||
|
||||
# checked(:never) - Rules hash is expensive to check
|
||||
sig { params(prop: Symbol, rules: Rules).void.checked(:never) }
|
||||
def add_prop_definition(prop, rules)
|
||||
sig { params(name: Symbol, rules: Rules).void.checked(:never) }
|
||||
def add_prop_definition(name, rules)
|
||||
override = rules.delete(:override)
|
||||
|
||||
if props.include?(prop) && !override
|
||||
raise ArgumentError.new("Attempted to redefine prop #{prop.inspect} on class #{@class} that's already defined without specifying :override => true: #{prop_rules(prop)}")
|
||||
elsif !props.include?(prop) && override
|
||||
raise ArgumentError.new("Attempted to override a prop #{prop.inspect} on class #{@class} that doesn't already exist")
|
||||
if props.include?(name) && !override
|
||||
raise ArgumentError.new("Attempted to redefine prop #{name.inspect} on class #{@class} that's already defined without specifying :override => true: #{prop_rules(name)}")
|
||||
end
|
||||
|
||||
@props = @props.merge(prop => rules.freeze).freeze
|
||||
@props = @props.merge(name => rules.freeze).freeze
|
||||
end
|
||||
|
||||
# Heads up!
|
||||
@ -302,6 +316,27 @@ class T::Props::Decorator
|
||||
T::Utils::Nilable.is_union_with_nilclass(cls) || ((cls == T.untyped || cls == NilClass) && rules.key?(:default) && rules[:default].nil?)
|
||||
end
|
||||
|
||||
sig(:final) { params(name: Symbol).returns(T::Boolean).checked(:never) }
|
||||
private def method_defined_on_ancestor?(name)
|
||||
@class.method_defined?(name) && !@class.method_defined?(name, false)
|
||||
end
|
||||
|
||||
sig(:final) { params(name: Symbol, rules: Rules).void.checked(:never) }
|
||||
private def validate_overrides(name, rules)
|
||||
override = elaborate_override(name, rules[:override])
|
||||
|
||||
return if rules[:without_accessors]
|
||||
|
||||
if override[:reader] && !method_defined_on_ancestor?(name) && !props.include?(name)
|
||||
raise ArgumentError.new("You marked the getter for prop #{name.inspect} as `override`, but the method `#{name}` doesn't exist to be overridden.")
|
||||
end
|
||||
|
||||
# Properly, we should also check whether `props[name]` is immutable, but the old code didn't either.
|
||||
if !rules[:immutable] && override[:writer] && !method_defined_on_ancestor?("#{name}=".to_sym) && !props.include?(name)
|
||||
raise ArgumentError.new("You marked the setter for prop #{name.inspect} as `override`, but the method `#{name}=` doesn't exist to be overridden.")
|
||||
end
|
||||
end
|
||||
|
||||
# checked(:never) - Rules hash is expensive to check
|
||||
sig do
|
||||
params(
|
||||
@ -381,6 +416,7 @@ class T::Props::Decorator
|
||||
rules[:setter_proc] = setter_proc
|
||||
rules[:value_validate_proc] = value_validate_proc
|
||||
|
||||
validate_overrides(name, rules)
|
||||
add_prop_definition(name, rules)
|
||||
|
||||
# NB: using `without_accessors` doesn't make much sense unless you also define some other way to
|
||||
@ -405,6 +441,7 @@ class T::Props::Decorator
|
||||
# Fast path (~4x faster as of Ruby 2.6)
|
||||
@class.send(:define_method, "#{name}=", &rules.fetch(:setter_proc))
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if method(:prop_get).owner != T::Props::Decorator || rules.key?(:ifunset)
|
||||
@ -627,7 +664,7 @@ class T::Props::Decorator
|
||||
|
||||
props.each do |name, rules|
|
||||
copied_rules = rules.dup
|
||||
# NB: Calling `child.decorator` here is a timb bomb that's going to give someone a really bad
|
||||
# NB: Calling `child.decorator` here is a time bomb that's going to give someone a really bad
|
||||
# time. Any class that defines props and also overrides the `decorator_class` method is going
|
||||
# to reach this line before its override take effect, turning it into a no-op.
|
||||
child.decorator.add_prop_definition(name, copied_rules)
|
||||
@ -656,6 +693,52 @@ class T::Props::Decorator
|
||||
end
|
||||
end
|
||||
|
||||
sig(:final) do
|
||||
params(key: Symbol, d: T.untyped, out: T::Hash[Symbol, {allow_incompatible: T::Boolean}])
|
||||
.void
|
||||
.checked(:never)
|
||||
end
|
||||
private def elaborate_override_entry(key, d, out)
|
||||
# It's written this way so that `{reader: false}` will omit the entry for `reader` in the
|
||||
# result entirely
|
||||
case d[key]
|
||||
when TrueClass
|
||||
out[key] = {allow_incompatible: false}
|
||||
when Hash
|
||||
out[key] = {allow_incompatible: !!d[key][:allow_incompatible]}
|
||||
end
|
||||
end
|
||||
|
||||
sig(:final) do
|
||||
params(name: Symbol, d: T.untyped)
|
||||
.returns(T::Hash[Symbol, {allow_incompatible: T::Boolean}])
|
||||
.checked(:never)
|
||||
end
|
||||
private def elaborate_override(name, d)
|
||||
return OVERRIDE_TRUE if d == true
|
||||
return OVERRIDE_READER if d == :reader
|
||||
return OVERRIDE_WRITER if d == :writer
|
||||
return OVERRIDE_EMPTY if d == false || d.nil?
|
||||
unless d.is_a?(Hash)
|
||||
raise ArgumentError.new("`override` only accepts `true`, `:reader`, `:writer`, or a Hash in prop #{@class.name}.#{name} (got #{d.class})")
|
||||
end
|
||||
|
||||
# cwong: should we check for bad keys? `sig { override(not_real: true) }` on a normal function
|
||||
# errors statically but not at runtime.
|
||||
|
||||
# XX cwong: this means {reader: false, allow_incompatible: true} will become {allow_incompatible: true},
|
||||
# is that fine?
|
||||
unless (allow_incompatible = d[:allow_incompatible]).nil?
|
||||
return {reader: {allow_incompatible: !!allow_incompatible},
|
||||
writer: {allow_incompatible: !!allow_incompatible}}.to_h
|
||||
end
|
||||
|
||||
result = {}
|
||||
elaborate_override_entry(:reader, d, result)
|
||||
elaborate_override_entry(:writer, d, result)
|
||||
result
|
||||
end
|
||||
|
||||
sig { params(child: T.all(Module, T::Props::ClassMethods), prop: Symbol).returns(T::Boolean).checked(:never) }
|
||||
private def clobber_getter?(child, prop)
|
||||
!!(child.decorator.method(:prop_get).owner != method(:prop_get).owner &&
|
Loading…
x
Reference in New Issue
Block a user