Sha256: 97e498a8c6e4a87e1bdd18dfdeb9d5ef763ed84980ef783e4f99f4984447af7b

Contents?: true

Size: 835 Bytes

Versions: 48

Compression:

Stored size: 835 Bytes

Contents

# typed: true
# frozen_string_literal: true

module T
  module Types
    module ProcBindPatch
      def initialize(arg_types, returns, bind = T::Private::Methods::ARG_NOT_PROVIDED)
        super(arg_types, returns)

        unless bind == T::Private::Methods::ARG_NOT_PROVIDED
          @bind = T.let(T::Utils.coerce(bind), T::Types::Base)
        end
      end

      def name
        name = super
        name = name.sub("T.proc", "T.proc.bind(#{@bind})") unless @bind.nil?
        name
      end
    end

    Proc.prepend(ProcBindPatch)
  end
end

module T
  module Private
    module Methods
      module ProcBindPatch
        def finalize_proc(decl)
          super

          T.unsafe(T::Types::Proc).new(decl.params, decl.returns, decl.bind)
        end
      end

      singleton_class.prepend(ProcBindPatch)
    end
  end
end

Version data entries

48 entries across 48 versions & 2 rubygems

Version Path
tapioca-0.12.0 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.17 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.16 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.15 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.14 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.13 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.12 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.11 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.10 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.9 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.8 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.7 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.6 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.5 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.4 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.3 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.2 lib/tapioca/sorbet_ext/proc_bind_patch.rb
devcycle-ruby-server-sdk-2.0.0 vendor/bundle/ruby/3.0.0/gems/tapioca-0.11.1/lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.1 lib/tapioca/sorbet_ext/proc_bind_patch.rb
tapioca-0.11.0 lib/tapioca/sorbet_ext/proc_bind_patch.rb