class RBS::Definition - rbs: Ruby Standard Library Documentation

# class RBS::Definition

### Attributes

ancestors[R]
class_variables[R]
entry[R]
instance_variables[R]
methods[R]
self_type[R]
type_name[R]

### Public Class Methods

new(type_name:, entry:, self_type:, ancestors:) click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 284
    def initialize(type_name:, entry:, self_type:, ancestors:)
      case entry
      when Environment::ClassEntry, Environment::ModuleEntry
        # ok
      else
        unless entry.decl.is_a?(AST::Declarations::Interface)
          raise "Declaration should be a class, module, or interface: #{type_name}"
        end
      end

      unless self_type.is_a?(Types::ClassSingleton) || self_type.is_a?(Types::Interface) || self_type.is_a?(Types::ClassInstance)
        raise "self_type should be the type of declaration: #{self_type}"
      end

      @type_name = type_name
      @self_type = self_type
      @entry = entry
      @methods = {}
      @instance_variables = {}
      @class_variables = {}
      @ancestors = ancestors
    end

### Public Instance Methods

class?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 307
    def class?
      entry.is_a?(Environment::ClassEntry)
    end

class_type?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 324
    def class_type?
      self_type.is_a?(Types::ClassSingleton)
    end

each_type() { |type| ... } click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 369
    def each_type(&block)
      if block
        methods.each_value do |method|
          if method.defined_in == type_name
            method.method_types.each do |method_type|
              method_type.each_type(&block)
            end
          end
        end

        instance_variables.each_value do |var|
          if var.declared_in == type_name
            yield var.type
          end
        end

        class_variables.each_value do |var|
          if var.declared_in == type_name
            yield var.type
          end
        end
      else
        enum_for :each_type
      end
    end

instance_type?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 328
    def instance_type?
      self_type.is_a?(Types::ClassInstance)
    end

interface?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 315
    def interface?
      case en = entry
      when Environment::SingleEntry
        en.decl.is_a?(AST::Declarations::Interface)
      else
        false
      end
    end

interface_type?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 332
    def interface_type?
      self_type.is_a?(Types::Interface)
    end

map_method_type(&block) click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 359
    def map_method_type(&block)
      definition = self.class.new(type_name: type_name, self_type: self_type, ancestors: ancestors, entry: entry)

      definition.methods.merge!(methods.transform_values {|method| method.map_method_type(&block) })
      definition.instance_variables.merge!(instance_variables)
      definition.class_variables.merge!(class_variables)

      definition
    end

module?() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 311
    def module?
      entry.is_a?(Environment::ModuleEntry)
    end

sub(s) click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 349
    def sub(s)
      definition = self.class.new(type_name: type_name, self_type: _ = self_type.sub(s), ancestors: ancestors, entry: entry)

      definition.methods.merge!(methods.transform_values {|method| method.sub(s) })
      definition.instance_variables.merge!(instance_variables.transform_values {|v| v.sub(s) })
      definition.class_variables.merge!(class_variables.transform_values {|v| v.sub(s) })

      definition
    end

type_params() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 336
    def type_params
      type_params_decl.each.map(&:name)
    end

type_params_decl() click to toggle source

    # File rbs-3.8.0/lib/rbs/definition.rb, line 340
    def type_params_decl
      case en = entry
      when Environment::ClassEntry, Environment::ModuleEntry
        en.type_params
      when Environment::SingleEntry
        en.decl.type_params
      end
    end