From a46430a390a6433c7c300b4fdcf9285bc62bdd84 Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Mon, 24 Jul 2023 06:55:41 -0700 Subject: [PATCH 1/2] Fix type error when running 'brew doctor' --- Library/Homebrew/formula.rb | 17 +++++++++++------ Library/Homebrew/formulary.rb | 8 +++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb index 0837449691..46e195b947 100644 --- a/Library/Homebrew/formula.rb +++ b/Library/Homebrew/formula.rb @@ -367,9 +367,9 @@ class Formula # Is this formula HEAD-only? # @private - sig { returns(T.nilable(T::Boolean)) } + sig { returns(T::Boolean) } def head_only? - head && !stable + !!head && !stable end delegate [ # rubocop:disable Layout/HashAlignment @@ -437,6 +437,7 @@ class Formula # @see .loaded_from_api? delegate loaded_from_api?: :"self.class" + sig { void } def update_head_version return unless head? return unless head.downloader.is_a?(VCSDownloadStrategy) @@ -502,12 +503,14 @@ class Formula # An old name for the formula. # @deprecated Use #{#oldnames} instead. + sig { returns(T.nilable(String)) } def oldname odeprecated "Formula#oldname", "Formula#oldnames" @oldname ||= oldnames.first end # Old names for the formula. + sig { returns(T::Array[String]) } def oldnames @oldnames ||= if tap tap.formula_renames @@ -518,6 +521,7 @@ class Formula end # All aliases for the formula. + sig { returns(T::Array[String]) } def aliases @aliases ||= if tap tap.alias_reverse_table[full_name].to_a.map do |a| @@ -1434,6 +1438,7 @@ class Formula end # @private + sig { returns(T::Array[String]) } def oldnames_to_migrate oldnames.select do |oldname| old_rack = HOMEBREW_CELLAR/oldname @@ -1444,7 +1449,7 @@ class Formula end end - sig { returns(T.nilable(T::Boolean)) } + sig { returns(T::Boolean) } def migration_needed? !oldnames_to_migrate.empty? && !rack.exist? end @@ -1492,7 +1497,7 @@ class Formula end def current_installed_alias_target - Formulary.factory(installed_alias_name) if installed_alias_path + Formulary.factory(T.must(installed_alias_name)) if installed_alias_path end # Has the target of the alias used to install this formula changed? @@ -2014,9 +2019,9 @@ class Formula # True if this formula is provided by Homebrew itself # @private - sig { returns(T.nilable(T::Boolean)) } + sig { returns(T::Boolean) } def core_formula? - tap&.core_tap? + !!tap&.core_tap? end # True if this formula is provided by external Tap diff --git a/Library/Homebrew/formulary.rb b/Library/Homebrew/formulary.rb index fd9673e953..5127263577 100644 --- a/Library/Homebrew/formulary.rb +++ b/Library/Homebrew/formulary.rb @@ -729,9 +729,9 @@ module Formulary # * a local bottle reference sig { params( - ref: T.nilable(T.any(Pathname, String)), + ref: T.any(Pathname, String), spec: Symbol, - alias_path: Pathname, + alias_path: T.nilable(Pathname), from: Symbol, warn: T::Boolean, force_bottle: T::Boolean, @@ -742,15 +742,13 @@ module Formulary def self.factory( ref, spec = :stable, - alias_path: T.unsafe(nil), + alias_path: nil, from: T.unsafe(nil), warn: T.unsafe(nil), force_bottle: T.unsafe(nil), flags: T.unsafe(nil), ignore_errors: T.unsafe(nil) ) - raise ArgumentError, "Formulae must have a ref!" unless ref - cache_key = "#{ref}-#{spec}-#{alias_path}-#{from}" return cache[:formulary_factory][cache_key] if factory_cached? && cache[:formulary_factory]&.key?(cache_key) From 479ca5e31498bcff003643b1f97345a63ffe6f0d Mon Sep 17 00:00:00 2001 From: Douglas Eichelberger Date: Mon, 24 Jul 2023 07:01:57 -0700 Subject: [PATCH 2/2] Fix test --- Library/Homebrew/test/formulary_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/test/formulary_spec.rb b/Library/Homebrew/test/formulary_spec.rb index ca6455fe73..ad81b0aa83 100644 --- a/Library/Homebrew/test/formulary_spec.rb +++ b/Library/Homebrew/test/formulary_spec.rb @@ -77,7 +77,7 @@ describe Formulary do it "raises an error if ref is nil" do expect do described_class.factory(nil) - end.to raise_error(ArgumentError) + end.to raise_error(TypeError) end context "with sharded Formula directory" do