From ed4b6d4246a06bdb2062da9d34c2425df2a81282 Mon Sep 17 00:00:00 2001 From: Issy Long Date: Fri, 5 Jul 2024 16:37:34 +0100 Subject: [PATCH] development_tools: Convert to Sorbet `typed: strict` --- Library/Homebrew/development_tools.rb | 52 +++++++++++++-------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/Library/Homebrew/development_tools.rb b/Library/Homebrew/development_tools.rb index 9d900f5a0f..a0f0fd5c6d 100644 --- a/Library/Homebrew/development_tools.rb +++ b/Library/Homebrew/development_tools.rb @@ -1,4 +1,4 @@ -# typed: true +# typed: strict # frozen_string_literal: true require "version" @@ -16,7 +16,7 @@ class DevelopmentTools # Don't call tools (cc, make, strip, etc.) directly! # Give the name of the binary you look for as a string to this method # in order to get the full path back as a Pathname. - (@locate ||= {}).fetch(tool) do |key| + (@locate ||= T.let({}, T.nilable(T::Hash[T.untyped, T.untyped]))).fetch(tool) do |key| @locate[key] = if File.executable?((path = "/usr/bin/#{tool}")) Pathname.new path # Homebrew GCCs most frequently; much faster to check this before xcrun @@ -62,12 +62,13 @@ class DevelopmentTools # @api public sig { returns(Version) } def clang_version - @clang_version ||= if (path = locate("clang")) && - (build_version = `#{path} --version`[/(?:clang|LLVM) version (\d+\.\d(?:\.\d)?)/, 1]) - Version.new build_version - else - Version::NULL - end + @clang_version ||= T.let( + if (path = locate("clang")) && (bv = `#{path} --version`[/(?:clang|LLVM) version (\d+\.\d(?:\.\d)?)/, 1]) + Version.new(bv) + else + Version::NULL + end, T.nilable(Version) + ) end # Get the Clang build version. @@ -75,13 +76,14 @@ class DevelopmentTools # @api public sig { returns(Version) } def clang_build_version - @clang_build_version ||= if (path = locate("clang")) && - (build_version = `#{path} --version`[ -%r{clang(-| version [^ ]+ \(tags/RELEASE_)(\d{2,})}, 2]) - Version.new build_version - else - Version::NULL - end + @clang_build_version ||= T.let( + if (path = locate("clang")) && + (build_version = `#{path} --version`[%r{clang(-| version [^ ]+ \(tags/RELEASE_)(\d{2,})}, 2]) + Version.new(build_version) + else + Version::NULL + end, T.nilable(Version) + ) end # Get the LLVM Clang build version. @@ -89,15 +91,14 @@ class DevelopmentTools # @api public sig { returns(Version) } def llvm_clang_build_version - @llvm_clang_build_version ||= begin + @llvm_clang_build_version ||= T.let(begin path = Formulary.factory("llvm").opt_prefix/"bin/clang" - if path.executable? && - (build_version = `#{path} --version`[/clang version (\d+\.\d\.\d)/, 1]) - Version.new build_version + if path.executable? && (bv = `#{path} --version`[/clang version (\d+\.\d\.\d)/, 1]) + Version.new(bv) else Version::NULL end - end + end, T.nilable(Version)) end # Get the GCC version. @@ -105,12 +106,11 @@ class DevelopmentTools # @api internal sig { params(cc: String).returns(Version) } def gcc_version(cc) - (@gcc_version ||= {}).fetch(cc) do + (@gcc_version ||= T.let({}, T.nilable(T::Hash[String, Version]))).fetch(cc) do path = HOMEBREW_PREFIX/"opt/#{CompilerSelector.preferred_gcc}/bin"/cc path = locate(cc) unless path.exist? - version = if path && - (build_version = `#{path} --version`[/gcc(?:(?:-\d+(?:\.\d)?)? \(.+\))? (\d+\.\d\.\d)/, 1]) - Version.new build_version + version = if path && (bv = `#{path} --version`[/gcc(?:(?:-\d+(?:\.\d)?)? \(.+\))? (\d+\.\d\.\d)/, 1]) + Version.new(bv) else Version::NULL end @@ -120,8 +120,8 @@ class DevelopmentTools sig { void } def clear_version_cache - @clang_version = @clang_build_version = nil - @gcc_version = {} + @clang_version = @clang_build_version = T.let(nil, T.nilable(Version)) + @gcc_version = T.let({}, T.nilable(T::Hash[String, Version])) end sig { returns(T::Boolean) }