Sha256: 93ccb90be271412b6bafc403b8d93e62e0bbfb9efbfd8740f6197f9d790f57fd

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

require 'yoda/typing/types/rbs_type_wrapper_interface'

module Yoda
  module Typing
    module Types
      class Type
        include RbsTypeWrapperInterface

        # @return [Model::Environment]
        attr_reader :environment

        # @return [RBS::Types::t]
        attr_reader :rbs_type

        # @param environment [Model::Environment]
        # @param rbs_type [RBS::Types::t]
        def initialize(environment:, rbs_type:)
          @environment = environment
          @rbs_type = rbs_type
        end

        # @return [Model::Values::Base]
        def value
          @value ||= environment.resolve_value_by_rbs_type(rbs_type)
        end

        # @return [InstanceType]
        def instance_type
          InstanceType.new(self)
        end

        # @return [SingletonType]
        def singleton_type
          SingletonType.new(self)
        end

        # @deprecated Use {#value} to access referred objects.
        # @return [Store::Objects::Base]
        def klass
          value.referred_objects.first
        end

        # @return [String]
        def to_s
          rbs_type.to_s
        end

        # @param pp [PP]
        def pretty_print(pp)
          pp.object_group(self) do
            pp.breakable
            pp.text "type:"
            pp.pp rbs_type.to_s
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/typing/types/type.rb
yoda-language-server-0.10.0 lib/yoda/typing/types/type.rb
yoda-language-server-0.9.0 lib/yoda/typing/types/type.rb
yoda-language-server-0.8.0 lib/yoda/typing/types/type.rb