Sha256: b5f247aa3f751fdf40121ed75c92a744cf5671767a8baab2692e799a51102336

Contents?: true

Size: 1.55 KB

Versions: 3

Compression:

Stored size: 1.55 KB

Contents

module Ruby
  module Signature
    module BuiltinNames
      class Name
        attr_reader :name

        def initialize(name:)
          @name = name
        end

        def to_s
          name.to_s
        end

        def instance_type(*args)
          Types::ClassInstance.new(name: name, args: args, location: nil)
        end

        def instance_type?(type)
          type.is_a?(Types::ClassInstance) && type.name == name
        end

        def singleton_type
          @singleton_type ||= Types::ClassSingleton.new(name: name, location: nil)
        end

        def singleton_type?(type)
          type.is_a?(Types::ClassSingleton) && type.name == name
        end

        def self.define(name, namespace: Namespace.root)
          new(name: TypeName.new(name: name, namespace: namespace))
        end
      end

      BasicObject = Name.new(name: TypeName.new(name: :BasicObject, namespace: Namespace.root))
      Object = Name.new(name: TypeName.new(name: :Object, namespace: Namespace.root))
      Kernel = Name.new(name: TypeName.new(name: :Kernel, namespace: Namespace.root))
      String = Name.define(:String)
      Comparable = Name.define(:Comparable)
      Enumerable = Name.define(:Enumerable)
      Class = Name.define(:Class)
      Module = Name.define(:Module)
      Array = Name.define(:Array)
      Hash = Name.define(:Hash)
      Range = Name.define(:Range)
      Enumerator = Name.define(:Enumerator)
      Set = Name.define(:Set)
      Symbol = Name.define(:Symbol)
      Integer = Name.define(:Integer)
      Float = Name.define(:Float)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
steep-0.14.0 vendor/ruby-signature/lib/ruby/signature/builtin_names.rb
steep-0.13.0 vendor/ruby-signature/lib/ruby/signature/builtin_names.rb
steep-0.12.0 vendor/ruby-signature/lib/ruby/signature/builtin_names.rb